2015-08-27 3 views
0

Итак, я видел несколько сообщений, объясняющих, как использовать переменную в значении для выбора атрибута. то есть (где событие JS относится к DIV (что делает его $ (это):JQuery [attribute] Селекторы

HTML

<div id="item1"></div> 
<div id="item1" style="display: none;"></div> 

JS

var find = $(this).attr("id") 
$('div[id="'+find+'"]').show(); 

Но я хотел бы знать, как используйте переменную в селекторе jquery, чтобы найти что-то с подобной строкой для значения переменной, т. е. найти элемент из приведенного выше примера, но ищет «# item1div», где цель события все еще «#ite m1"

HTML

<div id="item1"></div> 
<div id="item1div" style="display: none;"></div> 

JS

var find = $(this).attr("id") 
$('div[id="'+find+"div"'"]').show(); // incorrect syntax 

Так что мой вопрос: Как я могу исправить выше синтаксис, чтобы включить дополнительную строку в атрибут проверки?

Я не могу найти ссылки на правильный синтаксис того, как добавить компиляцию строки значения переменной и явной строки, а затем проверить это как значение для атрибута x.

Я знаю, что здесь я могу использовать [id*="'+find+'"], потому что альтернативный идентификатор содержит те же символы, что и основной, но я хочу знать, как настроить целевой идентификатор другого на основе первого. Например, если бы я был # item1, # item1div и # item1img, как я могу использовать событие на "# item1", чтобы найти значение атрибута равно "item1div" и/или "item1img"

EDIT: I также просто понял, что могу просто использовать [id|="'+find+'"], если я называю divs соответственно дефисом, но опять же не решает идентификаторы с разными окончаниями (или разными строками, которые появляются после дефиса)

+1

Вы должны использовать ID selector '$ ('#' + find) .show()' вместо '$ ('. Divs [id ="' + find + '"]'). show();'. Таким образом, вы можете использовать '$ ('#' + find + 'div')', чтобы найти '# item1div' или что-то динамическое в первой части. Примечание: неверное вы упомянули из-за отсутствующего '+' - оно должно быть '$ ('div [id ="' + find + "div" ** + ** '"]'). Show();' –

+0

вопрос очень неясен. Что ты пытаешься сделать? выполнить поиск по шаблону? – taesu

+0

вот некоторые идеи: http://stackoverflow.com/questions/13541898/how-can-i-select-an-element-by-id-with-jquery-using-regex http: // stackoverflow .com/questions/190253/jquery-selector-regular-expressions – eaCe

ответ

0

$('div[id="'+find+"div"'"]') не является действительным Javascript Синтаксис:

$(   // jQuery function 
'div[id="' // String 
+ find  // Add variable 
+ "div"  // Add String 
'"]'  // Unexpected string! - Error 

Один пример действительного синтаксиса будет:

$('div[id="'+find+'div"]') 

Однако, так как это идентификатор, вы можете использовать селектор ID вместо:

$('div#'+find+'div') 
+0

Это было очень полезно, как и большинство комментариев и ответов. Но я очень ценю разбивку того, что мой синтаксис, что делать, и где это пошло не так. Я изучаю больше javascript каждый день, и иногда мне кажется, что мой синтаксис близок, но я не могу понять, что мне не хватает или уходит. Кроме того, чтобы успокоить экспертов javascript, я теперь пытаюсь использовать правильный '('#' + var +)' для выбора идентификаторов - я не понимал, что это было использовано как селектор специально для id. Неудивительно, что я не мог найти ничего на '[id =" 'Спасибо снова. –

+0

@RobertH Оба способа [должны работать] (http://jsfiddle.net/c3j8zLww/2/). Синтаксис '#' просто короче и обычно легче читать. Существуют также тонкие различия; если ваш селектор использует только '#' (например, '$ (" # someId ")'), тогда механизм выбора может оптимизировать его, и он будет извлекать только первый экземпляр. – Stryner

0

вопрос очень неясен, но я предполагаю ваш вопрос сводится к:

Q: как искать все элементы, где начинается строка x?

: Для того, чтобы получить все элементы, начиная с "item1" вы должны использовать:

$("[id^=item1]")

+0

Извините , Я пытаюсь включить все детали и вещи, которые, как я думал, пытаются понять, как далеко я решаю проблему. Вопрос сводится к тому, как я правильно использую: '$ ('div [id = " '+ найти + "Див"'"] ') шоу(). // неправильный синтаксис' , чтобы ввести значение переменной в проверку атрибута, но затем добавить что-то дополнительное к той строке, которая соответствует переменной (например, добавление «div» в «item1») –

0

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

$('#' + find).show(); 

Чтобы найти item1div или динамическая первая часть - $('#' + find + 'div')

Примечание: неправильный синтаксис вы упомянули из-за отсутствующего + - Он должен быть

//      V-- you missed this 
$('div[id="'+find+"div"+'"]').show(); 
0

Чтобы добавить явную строку в значение атр вы можете написать следующим образом

$('[attr="'+attrVal+'extraString"]') 

Для evample в случае ид DIV itemdiv

var item1ID = $('#item1').attr('id'); // item1 
$('[id="'+item1ID+'div"]')    // valid selector to select #item1div 
Смежные вопросы