2013-10-25 4 views
0

Может кто-нибудь объяснить, почему это работает:

$(function(){ 
    $("ol li a").click(function(){ 
     $("ol li a").filter(":even").css("color", "orange"); 
    }); 
}); 

Но это не делает:

$(function(){ 
    $("ol li a").click(function(){ 
     $(this).filter(":even").css("color", "orange"); 
    }); 
}); 

Я думал, что с помощью $ (это) в этом контексте будет ссылаться на объект jquery, в котором есть мой оригинальный селектор.

+0

Сделайте console.log '$ (this)', и у вас будет ваш ответ :) –

ответ

5

Потому что $(this) - это единственный элемент (цель события), в то время как $("ol li a") содержит от 0 до N элементов, соответствующих этому сектору.

3

this не является набором элементов, соответствующих оригинальному селектору, это особый элемент, который получил событие. Если у вас есть селектор, который возвращает один элемент, чем $(this), а $(selector) являются взаимозаменяемыми, но не в вашем случае.

2

При нажатии на кнопку, событие выпалить и $(this) создается, однако, $(this) является только щелкнули элемент, а не весь набор элементов, поэтому он не будет иметь возможность фильтровать, так как это только один элемент.

Смежные вопросы