我用这个jQuery代码回答this question:
$('input[type="checkbox"][name$="chkSelect"]').click(function() {
$('input[type="checkbox"][name$="chkSelect"]').not(this).prop("checked", false);
});
...它让我思考:必须有办法避免在事件处理程序中复制选择器。
我尝试了$(this).selector
,但只返回一个空字符串。 Here's a demo
有没有办法在事件处理程序中获取选择器文本?
答案 0 :(得分:5)
$(this).selector
不起作用,因为你创建了一个 new jQuery对象并传递了一个DOM元素,而不是一个选择器。
如果您只想避免重复选择器,可以事先缓存元素(无论如何都要更好):
var $elements = $('input[type="checkbox"][name$="chkSelect"]');
$elements.click(function() {
$elements.not(this).prop("checked", false);
});
但我认为有一种方法可以将选择器放在事件处理程序中。您对所选元素的唯一引用是相应的DOM元素(通过this
)。但你不能从那里“反向工程”选择器。
答案 1 :(得分:1)
你总是可以这样做:
for(var i in arr){
$(arr[i]).bind('click', {'selector': arr[i]}, function(event){
console.log(event.data.selector);
});
}
答案 2 :(得分:0)
$('div').click(function() {
alert($(this)[0].nodeName);
});
答案 3 :(得分:0)
这家伙似乎已经做到了。 How do I get a jQuery selector's expression as text? - 请参阅Pim Jager的回答