jQuery-получить дочерний ввод на основе селектора имен
У меня есть событие onclick, которое вызывает функцию, передавая текущий div:
<div onclick="deleteline($(this));">
В моей функции deleteline, как я могу получить потомка родителя $(this), где имя содержит Qty?
В этом примере я ищу, чтобы получить поле ввода ProdQty:
<div>
<input id="PrdQty" type="hidden" value="1">
<div onclick="deleteline($(this));">
</div>
Править:
Эта страница включается несколько раз в другую страницу с помощью вызова ajax.
Поэтому, если я назначу кликабельному div идентификатор, это вызовет конфликт после того, как этот код будет введен в родитель во 2-й раз.
В результате я использовал предложения ниже, сохранил встроенный onclick и получаю кол-во С помощью: sender.родитель().find ('input[id*= "Qty"]')
5 ответов:
Для этого можно использовать CSS селекторы в jQuery (http://api.jquery.com/category/selectors/)
Таким образом, ваш пример будет:
$(this).siblings("input[id*='Qty']"), что вернет все входные данные на том же уровне, что и $(this), которые имеют 'Qty' в своем id в виде массива. Если вы хотите только первый, добавьте .сначала () на конец строки, т. е.:
$(this).siblings("input[id*='Qty']").first()
Почему бы не использовать API событий jQuery?
// make it as specific as you need $('div').click(function() { // do something });И вы можете использовать
.parent([selector])функция в jQuery для получения родителя. И в этом примере вы можете использовать.prev([selector])функция также, чтобы получить предыдущий элемент.
<div> <input id="PrdQty" type="hidden" value="1"> <div id="getChild"></div> // here I give an ID to you div.you can also use class </div> // binding click event on #getChild div $('#getChild').on('click', function() { $(this).parent().find('input[id~="Qty"]'); });Или:
<div> <input id="PrdQty" type="hidden" value="1"> <div onclick="deleteline(this);"> </div> function deleteline($this) { $($this).parent().find('input[id~="Qty"]'); }
Я предпочитаю удалить onclick из разметки HTML, потому что я люблю писать его в N ненавязчивом способе. Я хотел бы добавить имя класса, чтобы элемент div, чтобы быть выступать в качестве селектора
<div> <input id="PrdQty" type="hidden" value="1"> <div class="divtoCheck" /> </div> $(function(){ $(".divtoCheck").click(function(){ var child=$(this).parent().find("input[id*='Qty']") alert(child.attr("id")); }); });Рабочий образец http://jsfiddle.net/gKnf3/10/
Вы захотите использовать атрибут , содержащий селектор , который предлагает jQuery.
Вот какой код я провернул: http://jsfiddle.net/luhn/RrczZ/
Edit: все остальные ответы, похоже, используют атрибут , содержащий селектор слов , который на самом деле не будет работать....
Comments