2016-11-07 98 views
1

林試圖通過它的標題,它存儲在一個變量來選擇一個元素:在jQuery選擇器中添加變量?

$('.images').hover(function(){ 
    var img = $(this).attr("title"); 
    $(".image-border[title='img']").addClass('show'); 
} 

但是,你可以想像,該變量被視爲字符串的一部分......這是甚至有可能?

回答

3

你可能會得到答案告訴你使用字符串連接,如:

不要做這種方式
$('.images').hover(function() { 
    var img = $(this).attr('title'); 
    $('.image-border[title="' + img + '"]').addClass('show'); 
}); 

這是一個壞主意。您尚未轉義存儲在img中的值,並且可能會破壞選擇器。

的方式做這樣的檢查是選擇一切可以靜態,然後filter結果只包括匹配的動態值的那些:

做這種方式
$('.images').hover(function() { 
    var img = $(this).attr('title'); 
    $('.image-border[title]').filter(function() { 
    return $(this).attr('title') === img; 
    }).addClass('show'); 
}); 
+0

這是更多的我正在尋找的方法。即使是最微小的事情,安全也很重要! - 謝謝 –

+0

好的,現在看起來好多了。 –

+2

使用此選擇器運行過濾器函數'.image-border [title]'。這並不是說它改變了@zzzzBov的精確解答。它只是減少了要測試的元素的數量,因爲它只提供了在其中具有title屬性的.image-border元素。 – SuperNOVA