如何使用当前选择器选择所有项目?可能听起来有点懒,但我想知道这是否可行 - 而不是使用类名。
$(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
这不重复选择器。
答案 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)
现在我理解你的问题。您应该使用以下代码:
$(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
});