-
1. Data: 2011-11-16 10:17:06
Temat: JS - jak to elegancko zrobić?
Od: Marek <p...@s...com>
Mamy sobie tabelkę z wieloma wierszami i kolumnami:
<tr onClick="jakis_kod(IDwiersza)">
<td>xxx</td>
<td>nie klikalny</td>
<td>xxx</td>
<td>xxx</td>
<td>nie klikalny</td>
</tr>
Taki zapis spowoduje, że kliknięcie na wierszu wywoła jakąś akcję w JS.
Chciałbym jednak aby niektóre komórki nie były klikalne. Mógłbym oczywiście
powielać kod JS dla klikalnych komórek lecz wtedy dublującego się kodu
będzie od groma.
Czy da się to zrobić lepiej?
-
2. Data: 2011-11-16 13:52:16
Temat: Re: JS - jak to elegancko zrobić?
Od: Gregbike <g...@g...com>
Hej,
W dniu 2011-11-16 11:17, Marek pisze:
> Mamy sobie tabelkę z wieloma wierszami i kolumnami:
>
> <tr onClick="jakis_kod(IDwiersza)">
> <td>xxx</td>
> <td>nie klikalny</td>
> <td>xxx</td>
> <td>xxx</td>
> <td>nie klikalny</td>
> </tr>
>
> Taki zapis spowoduje, że kliknięcie na wierszu wywoła jakąś akcję w JS.
> Chciałbym jednak aby niektóre komórki nie były klikalne. Mógłbym oczywiście
> powielać kod JS dla klikalnych komórek lecz wtedy dublującego się kodu
> będzie od groma.
Sprawdzaj w funkcji jakis_kod(), czy nie została przypadkiem kliknięta
komórka "nieklikalna". Np poprzez nadanie tym nieklikalnym jakiejś classy.
Nie stosuj onClick, jako atryubutu tagu w HTML. Zainteresuj się DOM /
Unobtrusive Javascript.
--
Pozdrawiam,
Grzegorz Gawlik
http://gregbike.carbonmade.com
-
3. Data: 2011-11-16 17:41:15
Temat: Re: JS - jak to elegancko zrobić?
Od: Marek <p...@s...com>
Dnia Wed, 16 Nov 2011 14:52:16 +0100, Gregbike napisał(a):
> Sprawdzaj w funkcji jakis_kod(), czy nie została przypadkiem kliknięta
> komórka "nieklikalna". Np poprzez nadanie tym nieklikalnym jakiejś classy.
Też tak kombinuję właśnie. Jednakże pewien problem stwarza mi nad jaką
komórką znajdował się kursor myszy w chwili gdy kliknięto na wierszu. Czy
wiesz jak to ustalić?
> Nie stosuj onClick, jako atryubutu tagu w HTML. Zainteresuj się DOM /
> Unobtrusive Javascript.
Poniekąd racja. Tak właśnie postępuję dla powtarzalnych na każdej stronie
elementów takich jak menu, integracja z FB itp. Jeśli natomiast coś jest
stosowane na danej stronie a na innej nie, to kod JS sprawdzający czy dana
strona zawiera element, któremu należy "wstrzyknąć" funkcjonalność tworzy
niezłą kobyłę programową przy dużej ilości stron. W takich przypadkach
stosuję kod w tagach. Choć może jest i tego rozwiązanie?
-
4. Data: 2011-11-16 20:11:07
Temat: Re: JS - jak to elegancko zrobić?
Od: Peter May <p...@o...pl>
W dniu 2011-11-16 11:17, Marek pisze:
> Mamy sobie tabelkę z wieloma wierszami i kolumnami:
>
> <tr onClick="jakis_kod(IDwiersza)">
> <td>xxx</td>
> <td>nie klikalny</td>
> <td>xxx</td>
> <td>xxx</td>
> <td>nie klikalny</td>
> </tr>
>
> Taki zapis spowoduje, że kliknięcie na wierszu wywoła jakąś akcję w JS.
> Chciałbym jednak aby niektóre komórki nie były klikalne. Mógłbym oczywiście
> powielać kod JS dla klikalnych komórek lecz wtedy dublującego się kodu
> będzie od groma.
>
> Czy da się to zrobić lepiej?
<tr class="akcja">...</tr>
<tr>...</tr>
<tr class="akcja">...</tr>
Zależnie, co tam używasz, to np.
1. jQuery: $('.akcja').click(i tu np. pointer do Twojej funkcji).
2. document.querySelectorAll('akcja').addEventListener(
'click', tu np.
pointer do Twojej funkcji, false); (to nie zadziała w IE < 8).
3. Petla po tr-ach i sprawdzenie ktory <tr> ma klasę "akcja" i dołączyć
akcję to zdarzenia.
Co tam sobie wolisz :-)
--
Peter
-
5. Data: 2011-11-17 08:58:46
Temat: Re: JS - jak to elegancko zrobić?
Od: Marek <p...@s...com>
Dnia Wed, 16 Nov 2011 21:11:07 +0100, Peter May napisał(a):
> Zależnie, co tam używasz, to np.
>
> 2. document.querySelectorAll('akcja').addEventListener(
'click', tu np.
> pointer do Twojej funkcji, false); (to nie zadziała w IE < 8).
To mnie bardzo zaciekawiłeo.
Czy addEventListener nie został wprowadzony dopiero w 9tej wersji IE? Czy
jednym ruchem można przypisać do wszystkich elementów "akcja" konkretne
zdarzenie zamiast robić to iteracyjnie?
-
6. Data: 2011-11-17 19:38:23
Temat: Re: JS - jak to elegancko zrobić?
Od: Peter May <p...@o...pl>
W dniu 2011-11-17 09:58, Marek pisze:
> Dnia Wed, 16 Nov 2011 21:11:07 +0100, Peter May napisał(a):
>
>> Zależnie, co tam używasz, to np.
>>
>> 2. document.querySelectorAll('akcja').addEventListener(
'click', tu np.
>> pointer do Twojej funkcji, false); (to nie zadziała w IE< 8).
>
> To mnie bardzo zaciekawiłeo.
>
> Czy addEventListener nie został wprowadzony dopiero w 9tej wersji IE? Czy
> jednym ruchem można przypisać do wszystkich elementów "akcja" konkretne
> zdarzenie zamiast robić to iteracyjnie?
A, zapomniałem, że addEventListener nie działa dla querySelectorAll.
Natomiast na pewno dla querySelector. Innymi słowy iteracja pozostaje,
jak była i jest :-)
--
Peter
-
7. Data: 2011-11-17 20:48:13
Temat: Re: JS - jak to elegancko zrobić?
Od: Marek <p...@s...com>
Dnia Thu, 17 Nov 2011 20:38:23 +0100, Peter May napisał(a):
> A, zapomniałem, że addEventListener nie działa dla querySelectorAll.
> Natomiast na pewno dla querySelector. Innymi słowy iteracja pozostaje,
> jak była i jest :-)
Tylko potwierdź, że querySelector działa pod IE8 :-) Nie mam jak sprawdzić.
-
8. Data: 2011-11-17 21:14:38
Temat: Re: JS - jak to elegancko zrobić?
Od: Mirosław Zalewski <miniopl@CUT_THIS.gmail.com>
czwartek, 17 listopada 2011 21:48 wielka mądrość na czytelników pl.comp.www
spłynęła, gdy tako rzekł(a) Marek:
> Tylko potwierdź, że querySelector działa pod IE8 :-) Nie mam jak
> sprawdzić.
<http://caniuse.com/queryselector>
<https://developer.mozilla.org/En/DOM/Document.query
Selector>
--
Niżej podpisany, zamieszkały w http://minio.xt.pl ,
Mirosław Zalewski
-
9. Data: 2011-11-17 22:28:26
Temat: Re: JS - jak to elegancko zrobić?
Od: Peter May <p...@o...pl>
W dniu 2011-11-17 21:48, Marek pisze:
> Dnia Thu, 17 Nov 2011 20:38:23 +0100, Peter May napisał(a):
>
>
>> A, zapomniałem, że addEventListener nie działa dla querySelectorAll.
>> Natomiast na pewno dla querySelector. Innymi słowy iteracja pozostaje,
>> jak była i jest :-)
>
> Tylko potwierdź, że querySelector działa pod IE8 :-) Nie mam jak sprawdzić.
http://www.quirksmode.org/dom/w3c_core.html
--
Peter
-
10. Data: 2011-11-17 23:45:46
Temat: Re: JS - jak to elegancko zrobić?
Od: Marek <p...@s...com>
Dnia Thu, 17 Nov 2011 22:14:38 +0100, Mirosław Zalewski napisał(a):
> czwartek, 17 listopada 2011 21:48 wielka mądrość na czytelników pl.comp.www
> spłynęła, gdy tako rzekł(a) Marek:
>
>> Tylko potwierdź, że querySelector działa pod IE8 :-) Nie mam jak
>> sprawdzić.
>
> <http://caniuse.com/queryselector>
> <https://developer.mozilla.org/En/DOM/Document.query
Selector>
Dzięki :)