2015-11-13 2 views
1

Это код, я работаю с:JQuery, как я могу получить мой h1, чтобы вновь появиться

$("#nav_list a").click(function() { 
    $("h1:gt(0)").hide(); 
    $("article").hide(); 
    var href_value = $(this).attr("href"); 
    $("h1:has(href_value)").show(); 
}); 

Почему я запутался потому, что если я заменить последнюю строку с этой линией он работает:

$("h1:has(#test)").show(); 

И если я проверить свою переменную:

alert(href_value); 

выход:

#test 

Так что, если я пытаюсь получить #test, и вот почему моя переменная содержит почему она не работает?

+0

JavaScript не автоматически преобразует строки в значения переменных. – PHPglue

+0

Псевдо-селектор ': has()' обычно принимает любой селектор jQuery 'a' или' a [href $ = pdf] '. Однако 'href_value' не является селектором, а атрибутом. – PeterKA

ответ

2

Вам нужно сцепить значение href_value к селектору:

$("h1:has(" + href_value + ")").show(); 
+0

Спасибо, это сработало, но я не уверен, что использовать эти +? –

+0

@JacobPeterson Поскольку 'href_value' является переменной. Его нужно было конкатенировать и оценивать, а не интерпретировать буквально как часть строки. –

+0

Хорошо, что имеет смысл, еще раз спасибо! –

2

Используйте это вместо:

$("h1:has("+href_value+")").show(); 
0

Вы должны сцепить строку с переменной, а также использовать указать атрибут как так :

$('h1:has(a[href="' + href_value + '"])').show(); 
0

Вам необходимо объединить строку с переменной.

$("#nav_list a").click(function() { 
    $("h1:gt(0)").hide(); 
    $("article").hide(); 
    var href_value = $(this).attr("href"); 
    $("hi:has("+ has_value +")").show(); 
}); 
Смежные вопросы