[英]Is there a way to get jQuery selector expression text?
我有像这样的选择器数组:
var arr = [".discuss .title .post", ".post .desc" , ".eventlist .event"];
我想遍历此数组并在其上附加一个click事件。
for(var i in arr){
$(arr[i]).click(function(){
//here I need the selector i.e. arr[i] expression - for some css work
});
}
有没有一种方法可以使我在点击回调函数中获取此选择器表达式? 我看了这篇有类似问题的文章: 如何获得jQuery选择器的文本表达式?
但正如那里所说,我找不到jQuery对象的任何“选择器”属性。 我这样尝试:
for(var i in arr){
$(arr[i]).click(function(){
console.log(jQuery(this).attr('selector')); //This gives undefined
});
}
有什么帮助吗?
正确的语法是$('.something').selector
。 但是, .selector
仅在显式提供选择器字符串时有效-但$(this)
没有选择器。
一种解决方法是将选择器的副本保存在围绕click
函数的函数中:
for (var i = 0; i < arr.length; i++) { // (Don't use "for-in loop" for arrays)
(function (selector) { // 2. a copy is saved as the argument "selector"
$(selector).click(function () {
console.log(selector);
});
}) (arr[i]); // 1. Pass in the selector
}
另一个选择是使用.is()
将$(this)
与数组中的每个选择器进行比较:
$(arr.join(',')).click(function () { // a quick way to select all selectors
var selector;
for (var i = 0; i < arr.length; i++) {
if ($(this).is(arr[i])) {
selector = arr[i];
break;
}
}
console.log(selector);
});
您至少可以获取每个选定元素的类值:
$(this).attr("class");
这不能为您打算做的事情提供足够的信息吗?
我似乎没有收到任何错误,好像没有.click()
事件一样, 此处为示例
但是,如果您拆分阵列并将单击附加到阵列中的每个项目,这似乎对我有用。
// Trouble is you will attach two click's to a class="post" item:
var arr = [".discuss .title .post", ".post .desc" , ".eventlist .event"];
for(var a in arr){
var ar = arr[a].split(' ');
for(var i in ar){
$(ar[i]).click(function(e){
e.preventDefault();
var href = $(this).attr('href');
var sele = $(this).attr('selector');
console.log(href);
console.log(sele);
alert("HREF: "+href+" - Selector: "+sele);
});
}
}
看看这里的实际操作以及停止添加两次单击的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.