передача переменной javascript в качестве идентификатора внутри функции jquery

#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")