知道为什么会发生这种情况......
var attr = $(this).data('link');
console.log(attr); // profile_following
console.log($("a[data-target='profile_following']")); // found the object
console.log($("a[data-target='+attr+']")); // [] empty
在点击处理程序中,我有上面的行!
console.log(attr);
成功打印profile_following
但是,如果我尝试选择具有属性选择器的链接,并且此变量(例如console.log($("a[data-target='+attr+']"));
)无法找到该元素!
最奇怪的是,如果我像console.log($("a[data-target='profile_following']"));
那样对该行进行硬编码,它会成功找到该对象。
知道为什么同一行不适用于属性选择器中的+attr+
?
答案 0 :(得分:13)
您需要使用字符串连接来创建值为"a[data-target='profile_following']"
的字符串。你这样做:
$('a[data-target="'+attr+'"]');
在您的示例中,+attr+
是字符串的一部分,因为您从未关闭并重新打开引号。