Выберите div из строки с помощью jquery

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

У меня есть строка, которая содержит несколько div, как получить один из них по идентификатору?

Редактировать

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

  $("#first #second").contextMenu({
        menu: 'myMenu'
    },
        function(action, el, pos) {
      switch (action) {
            case "do":
                {
  

и выбор является базовым

 $(el).html()
  

Итак, это код, который содержит html, который находится в #second, но # second — это не один div, это множество divs с этим идентификатором, и я хочу, чтобы при нажатии на этот div выбирался определенный идентификатор и получался его контекст. Есть ли более простой способ?

Комментарии:

1. Не могли бы вы, пожалуйста, предоставить пример кода, чтобы мы могли видеть, как вы получаете строку, содержащую divs.

2. Строка? Так вы не работаете с DOM? Вы хотите получить ответ в виде регулярного выражения? Я думаю, я прошу, пожалуйста, предоставьте более подробную информацию. О, и добро пожаловать в stack overflow 🙂

3. Другими словами, вам нужна помощь в синтаксическом анализе строки?

4. -1 Вам нужно предоставить более подробную информацию, если вы надеетесь получить ответ. Например, пример фрагмента HTML был бы хорошим началом. Примечание: вы можете отредактировать свой вопрос

Ответ №1:

Вы можете заставить jquery интерпретировать строку как набор тегов, подобных этому:

 $(htmlstring);
  

Так что что-то вроде этого может сработать:

 $("<div><div id='test'></div></div>").find("#test");
  

Редактировать:
Теперь, с обновленным вопросом, это, конечно, не то, что вы хотите.

У вас не может быть более одного элемента с одинаковым идентификатором. Идентификаторы должны быть уникальными идентификаторами.

Комментарии:

1. ну, поскольку OP изменил вопрос, похоже, что мы оба потратили впустую наше время 🙂 но для справки filter лучше, чем find здесь, поскольку filter не требует внешнего контейнера.

2. и я в любом случае добавлю вам 1, поскольку вы дали хороший ответ до того, как вопрос был изменен.

3. true, 1 для этого. забавно видеть ответы, все как-то пытаются интерпретировать вопрос, который оказался совершенно другим 😉

4. 1 за использование filter , спасло меня, хотя и не имеет отношения к вопросу, имеет ли отношение к моему поиску в Google 😉

5. 1, потому что, хотя это и не отвечает на вопрос, это отвечает именно на то, что я искал. Сэкономил мне много времени 🙂

Ответ №2:

В вашем случае вы можете обернуть el и перейти от него, вот так:

 $(el).find('.something-else').blah(); // ...
  

el это не строка, это элемент DOM.

Некоторая ваша путаница может быть вызвана написанием $(el).html() . Если бы вы выполняли отладку с помощью этого, это выглядело бы как строка, потому что вы извлекали фактический HTML, хранящийся в элементе DOM, который у вас был под рукой.