#javascript #jquery
#javascript #jquery
Вопрос:
<li id="sub:777" class="jstree-leaf">
<ins class="jstree-icon2">amp;nbsp;</ins>
<a class=""><ins class="jstree-icon2">amp;nbsp;</ins>Story B</a>
</li>
Мне нужно изменить класс <ins>
тегов для определенного <li>
:
var original_sub_id = $j(element).attr('id'); e.g sub:777
var new_sub_id = original_sub_id.split(":");
new_sub_id = new_sub_id.join("\\:"); e.g sub\:777
Мне нужно передать new_sub_id
переменную в приведенном ниже коде, но, похоже, это не работает:
$j("#" new_sub_id "ins:eq(1)").attr("class","jstree-icon2"); // set class to display new icon
Любые предложения приветствуются.
Комментарии:
1. можете ли вы уточнить, что вы подразумеваете под «мне нужно изменить класс тегов для определенного»?
2. мне нужно изменить класс тегов <ins> для определенного тега <li> .
3. Вам нужно поставить пробел между
new_sub_id
и «ins: eq(1)»
Ответ №1:
у меня такое чувство, что это из-за: в вашем идентификаторе.
: в селекторах jquery имеет тенденцию предшествовать псевдоселектору, например :checked, :selected, :focus
Комментарии:
1. Вот почему они экранируют: с \
2. эти идентификаторы поступают из базы данных? вам нужно использовать их для обратной отправки? вероятно, вы могли бы выполнить какую-нибудь причудливую замену строки и поменять : на — , а затем поменять его обратно, когда вам нужно отправить его на сервер. не видя больше вашего кода, трудно точно сказать, как это исправить.
3. Да, эти идентификаторы поступают из базы данных, и мне нужно отправить их обратно. Я заменил двоеточие на какой-то другой символ и сохранил его в переменной, а затем заменил его обратно при сохранении в БД. Спасибо за предложение 🙂
Ответ №2:
$j("#" new_sub_id " ins:eq(1)").attr("class","jstree-icon2"); // set class to display new icon
Не забудьте пробел перед ins:eq(1)
Также убедитесь, что этот элемент существует : $j("#" new_sub_id " ins:eq(1)")
Комментарии:
1. Это все еще не работает, даже если я ставлю пробел перед ins. Если я добавлю: $ j(«#sub \:7428 ins:eq (1)»).attr(«class»,»jstree-icon2″); он работает нормально.
Ответ №3:
Поскольку у вас уже есть ссылка на li
, вы можете просто передать это как контекст для вашего селектора.
$j("ins:eq(1)", element).attr("class","jstree-icon2")