Вложенный идентификатор в селекторе JQuery - PullRequest
5 голосов
/ 12 июля 2011

Я пытаюсь изменить href вложенного в div с именем blink3:

$('#blink3 #backLink').attr('href',"#item5");

Где HTML-код выглядит следующим образом:

<div style="float:left;text-align:center;" id="blink3">
<a href="#item4" class="panel" id="backLink">
<div class="divBack"></div></a>
</div>

хорошо работает во всех браузерах - НЕ IE 7 , и я не могу понять, почему не меняет href.

Это ошибка IE 7?JQuery?что-то не так с моим кодом?

Какие-нибудь решения?

Ответы [ 3 ]

20 голосов
/ 12 июля 2011

Ник Крейвер (о боже, где ты был?) Уже высказал это в комментарии.Совершенно бессмысленно создавать селектор, такой как #id #id, потому что идентификатор должен быть уникальным в вашем DOM по определению.

Похоже, вы нарушаете это правило и, следовательно, jQuery может выбрать неправильный узел.

Вы должны заменить свои "обратные ссылки" id на classes и перейти к селектору типа

$('#blink3 .backLink');
4 голосов
/ 23 сентября 2015

Я не вижу дублирования идентификаторов в вопросе, и у меня тоже был такой же вопрос, хотя все мои идентификаторы уникальны.Совершенно обоснованная причина желания использовать вложенные селекторы идентификаторов состоит в том, чтобы извлекать элемент тогда и только тогда, когда он является потомком определенного родителя.Я столкнулся с этим с помощью перетаскивания пользовательского интерфейса, а также узлов дерева.Хотя это не селектор, это то, что я использовал в прошлом:

$("#parentId").find("#childId")
3 голосов
/ 12 июля 2011

идентификаторы должны быть уникальными на странице. Как предполагает Ник, у вас должен быть только один идентификатор со значением backlink. Так что селектора $('#backlink') должно быть достаточно само по себе. Если у вас есть более одного идентификатора со значением backlink, значит, ваш HTML неверен, и вы должны исправить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...