Szybkie pytanie - ale zastanawiałem się, jaki jest największy sposób, aby osiągnąć następujące sposoby - mam ten skrypt -

 $('.trebBtn div').live('tap',function(event) {
   $('.trebBtn div').removeClass('selected');
   $(this).addClass('selected');

});

Zasadniczo właśnie przełącza stany na wielu oddzielnych div, które są owinięte za pomocą .trebbtn div.

Działa to dobrze - ale nie chcę niczego tak się wydarzyć, gdy zostanie kliknięty ostatni Div. Ma to klasę

Okrzyki Paul.

0
Dancer 21 grudzień 2011, 20:34

4 odpowiedzi

Najlepsza odpowiedź

Spójrz na jQuery's is. http://api.jquery.com/is/

$('.trebBtn div').live('tap',function(event) {
    if ( $(this).is(".search") ) return false;
    $('.trebBtn div').removeClass('selected');
    $(this).addClass('selected');
});

Innym sposobem jest: Korzystanie z selektora :not http://api.jquery.com/not/.

$('.trebBtn div:not(.search)').live('tap',function(event) {
    $('.trebBtn div').removeClass('selected');
    $(this).addClass('selected');
});

Lub używając hasClass: http://api.jquery.com/hasclass/

$('.trebBtn div').live('tap',function(event) {
    if ( $(this).hasClass(".search") ) return false;
    $('.trebBtn div').removeClass('selected');
    $(this).addClass('selected');
});
1
andlrc 21 grudzień 2011, 16:41

Korzystanie {x0}} uniemożliwią wydarzenie od zawsze przywiązany...

$('.trebBtn div:not(.search)').live('tap',function(event) {
    $('.trebBtn div').removeClass('selected');
    $(this).addClass('selected');
});
4
jondavidjohn 21 grudzień 2011, 16:36

Zamiast tego, że delegate lub on live jest przestarzały.

$('.treBtn').delegate('div:not(.search)', 'tap', function(event) {
   alert('div clicked'); 
});

Oto skrzypce z Handler Event click Odkąd nie mogę tego przetestować za pomocą { {X1}} wydarzenie.

1
aziz punjani 21 grudzień 2011, 16:46
$('.trebBtn div').live('tap',function(event) {
   if($(this).hasClass('search') == false){
     $('.trebBtn div').removeClass('selected');
     $(this).addClass('selected');
   }

})
0
Derk Arts 21 grudzień 2011, 16:36