选择所有$(this)的选择器

时间:2013-04-30 12:36:28

标签: jquery

如何使用当前选择器选择所有项目?可能听起来有点懒,但我想知道这是否可行 - 而不是使用类名。

$(document).on('click', '.selector', function() {
    // Select all nodes based on this selector

    $($(this).context) // Tried this but didn't work. I want to use $(this) to get the original selector (.selector), but not use $(this).className
});

所以不要写:

$('.selector').removeClass('selected');
$(this).addClass('selected');

我想:

$($(this).getSelector()).removeClass('selected');     // Remove class from all nodes with this selector
$(this).addClass('selected');           // Only add class to the item currently clicked

这不重复选择器。

4 个答案:

答案 0 :(得分:4)

您的选择器是硬编码的,所以只需再次使用它。

var selector = '.selector';
$(document).on('click', selector, function() {
    // Select all nodes based on this selector

    var matches = $(selector);
});

请注意,jQuery对象上有selector property,但它在1.7中已弃用,在1.9中已删除,因此即使您可以,我也不建议使用它。

答案 1 :(得分:3)

点击是在一个元素上完成的,因此所有始终是一个。如果你想获得用于附加点击处理程序的所有项目匹配选择器,你必须重复yoursef

$(document).on('click', '.selector', function() {
    var elems = $('.selector');
});

答案 2 :(得分:3)

现在我理解你的问题。您应该使用以下代码:

SEE DEMO

$(document).on('click', '.selector', function (e) {
    $('*').css('color','black');
    var $elems = $(e.handleObj.selector);//this is what you want!
    $elems.css('color','red');
});
$(document).on('click', 'div', function (e) {
    $('*').css('color','black');
    var $elems = $(e.handleObj.selector);
    $elems.css('color','red');
});

答案 3 :(得分:1)

var selector = '.selector',
    $elems = $(selector);

$(document).on('click', selector, function() {
    // Get individual
    var $this = $(this);

    // Still can cccess all  $elems
});