我有一个调用函数的onclick事件,传递当前的div:
<div onclick="deleteline($(this));">
在我的删除线功能中,如何获取名称中包含Qty的$(this)父项的子项?
在这个例子中,我希望得到ProdQty输入框:
<div>
<input id="PrdQty" type="hidden" value="1">
<div onclick="deleteline($(this));">
</div>
编辑: 此页面通过ajax调用多次包含在另一个页面中。 因此,如果我为可点击的div分配一个ID,那么在第二次将此代码注入父级后,它将导致冲突。
结果,我使用了下面的建议,保持内联onclick并且我使用了:sender.parent()。find('input [id * =“Qty”]')
答案 0 :(得分:4)
您可以在jQuery(http://api.jquery.com/category/selectors/)
中使用CSS选择器所以你的例子是:
$(this).siblings("input[id*='Qty']")
这将返回与$(this)相同级别的所有输入,其id为数组的'Qty'。如果你只想要第一个将.first()添加到行的末尾,即:
$(this).siblings("input[id*='Qty']").first()
答案 1 :(得分:2)
为什么不使用jQuery事件API?
// make it as specific as you need
$('div').click(function() {
// do something
});
您可以使用jQuery中的.parent([selector])
函数来获取父级。在此示例中,您还可以使用.prev([selector])
函数来获取上一个元素。
答案 2 :(得分:1)
<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"]');
}
答案 3 :(得分:1)
我更喜欢从HTML标记中删除onclick,因为我喜欢用n unobutrusive方式编写它。我会在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"));
});
});
答案 4 :(得分:0)
您将需要使用jQuery提供的attribute contains selector。
以下是我摆弄的一些代码:http://jsfiddle.net/luhn/RrczZ/
修改:所有其他答案似乎都在使用attribute contains word selector,这实际上无法正常工作....