JQuery: как получить весь тег-элемент, который был найден с помощью селектора?

0

Если я ищу элемент, т.е. вариант в окне выбора, как получить весь тег функции в качестве html?

<select name="xy">
  <option id="xyz" value="abc">something here</option>
  some more options
</select>

это не то, что я хочу получить:

$('select[name="xy"] option[value="abc"]').html()

это только возвращает меня

"something here"

но я хочу получить весь тег

<option id="xyz" value="abc">something here</option>

в функции foreach это работает очень хорошо

$('option[value="abc"]').each(function(){
  console.log(this);
});

возвращает мне мой поиск

<option id="xyz" value="abc">something here</option>

но там не должно быть необходимости, не так ли?

Теги:

2 ответа

1
Лучший ответ

Если вам нужна эта точная string по какой-то причине, вы можете следовать за Андреем. Просто имейте в виду, что это будет string объект, а не объект DOM. Если вы хотите использовать фактический объект, вы можете просто использовать $('select[name="xy"] option[value="abc"]')[0] и это вернет элемент DOM в индекс 0 селектор jQuery. Если вы хотите, чтобы вся эта строка добавляла элементы в другое место на странице, это обходной способ сделать это. Вы все еще можете использовать jQuery для этого, не входя в собственный javascript. Например:

var $copy_this = $('select[name="xy"] option[value="abc"]');
$('.some_other_place').append($copy_this.clone());

Теперь div с классом "some_other_place" будет иметь точную копию этого элемента option.

  • 0
    действительно? ой! Это мило! Я просто хочу удалить некоторые элементы, если это необходимо, и вставить их снова, если какие-то события произошли. Похоже, это лучший способ сделать это.
  • 0
    @Viktor Сри, я забыл добавить метод clone . Это хорошая методология, потому что она кеширует jQuery и позволяет вам снова использовать ее без перерасчета. Тогда вы можете просто $variable_name.clone() где угодно.
Показать ещё 5 комментариев
3

Вы можете просто использовать собственное свойство outerHTML элемента DOM:

$('select[name="xy"] option[value="abc"]')[0].outerHTML
  • 0
    Спасибо! [0] для первого удара?
  • 1
    @Viktor, jQuery выдает список объектов, соответствующих селектору. Даже если есть один такой объект, $() выдаст список, а список не знает о outerHTML . Таким образом, [0] должен получить доступ к первому элементу этого списка
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню