2016-11-07 9 views
1

Im пытается выбрать элемент с помощью его название, которое хранится в переменной:добавление переменной в селектор 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. Он просто уменьшает количество проверяемых элементов, поскольку он предоставляет только элементы .image-border, которые имеют в них атрибут title. – SuperNOVA