1

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

$(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

4 回答 4

4

您已经对选择器进行了硬编码,因此请再次使用它。

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

    var matches = $(selector);
});

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

于 2013-04-30T12:41:45.470 回答
3

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

$(document).on('click', '.selector', function() {
    var elems = $('.selector');
});
于 2013-04-30T12:38:39.540 回答
3

现在我明白你的问题了。您应该使用以下代码:

看演示

$(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');
});
于 2013-04-30T12:51:34.613 回答
1
var selector = '.selector',
    $elems = $(selector);

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

    // Still can cccess all  $elems
});
于 2013-04-30T12:39:19.850 回答