2012-02-14 50 views
2

任何想法,爲什麼出現這種情況?自定義數據屬性選擇器不工作

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

你必須在選擇器中注入'attr',所以你必須用雙引號(''a [data-target ='「+ attr +''」「')來分隔前綴和後綴字符串。此外,這是[jQuery如何找到基於數據屬性值的元素的副本?](http://stackoverflow.com/questions/4191386/jquery-how-to-find-an-element-based-上一個數據屬性值) – 2012-02-14 18:26:18

回答

13

您需要使用字符串連接來創建值爲"a[data-target='profile_following']"的字符串。你這樣做有:

$('a[data-target="'+attr+'"]'); 

在你的榜樣,+attr+是字符串的一部分,因爲你永遠不關閉並重新打開您的報價。