Как получить все дочерние входы элемента div (jQuery)
HTML:
<div id="panel">
<table>
<tr>
<td><input id="Search_NazovProjektu" type="text" value="" /></td>
</tr>
<tr>
<td><input id="Search_Popis" type="text" value="" /></td>
</tr>
</table>
</div>
мне нужно выбрать все входы в конкретном div.
это не работает:
var i = $("#panel > :input");
6 ответов:
используйте его без более чем:
$("#panel :input");The
>означает только прямые дочерние элементы, если вы хотите, чтобы все дети независимо от глубины всего использовать пространство.
вам нужно
var i = $("#panel input");или в зависимости от того, что именно вы хотите (см. ниже)
var i = $("#panel :input");the
>ограничится детьми, вы хотите всех потомков.EDIT: как отметил Ник, есть тонкая разница между
$("#panel input")и$("#panel :input).первый будет извлекать только элементы типа input, то есть
<input type="...">, а не<textarea>,<button>и<select>элементы. Спасибо Ник, не знал этого сам и исправил мой пост соответственно. Оставил оба варианта, потому что я думаю, что OP тоже не знал об этом и-технически - попросил входы... : -)
метод ' find 'можно использовать для получения всех дочерних входов контейнера, который уже был кэширован, чтобы сохранить его снова (в то время как метод' children ' получит только непосредственные дочерние элементы). например,
var panel= $("#panel"); var inputs = panel.find("input");
Если вы используете рамки, такие как Ruby on Rails или Spring MVC, вам может потребоваться использовать divs с квадратными скобками или другими символами, которые не разрешены, вы можете использовать
document.getElementByIdи это решение до сих пор работает, если у вас есть несколько входов с тем же типом.var div = document.getElementById(divID); $(div).find('input:text, input:password, input:file, select, textarea') .each(function() { $(this).val(''); }); $(div).find('input:radio, input:checkbox').each(function() { $(this).removeAttr('checked'); $(this).removeAttr('selected'); });в этом примере показано, как очистить входные данные, например, вам нужно будет изменить его.
var i = $("#panel input");должно работать :-)
the > будет приносить только прямых детей, никаких детей детей
the: предназначен для использования псевдоклассов, например. : hover и др.вы можете прочитать о доступных css-селекторах псевдоклассов здесь:http://docs.jquery.com/DOM/Traversing/Selectors#CSS_Selectors
вот мой подход:
Вы можете использовать его в другом случае.
var id; $("#panel :input").each(function(e){ id = this.id; // show id console.log("#"+id); // show input value console.log(this.value); // disable input if you want //$("#"+id).prop('disabled', true); });<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div id="panel"> <table> <tr> <td><input id="Search_NazovProjektu" type="text" value="Naz Val" /></td> </tr> <tr> <td><input id="Search_Popis" type="text" value="Po Val" /></td> </tr> </table> </div>
Comments