jQuery-基于名称选择器获取子输入

jQuery-基于名称选择器获取子输入,jquery,Jquery,我有一个onclick事件,它调用一个函数,传递当前div: <div onclick="deleteline($(this));"> 在我的deleteline函数中,如何获取$(this)父项的子项,其中名称包含数量 在本例中,我希望获得ProdQty输入框: <div> <input id="PrdQty" type="hidden" value="1"> <div onclick="deleteline($(this));"

我有一个onclick事件,它调用一个函数,传递当前div:

<div onclick="deleteline($(this));">

在我的deleteline函数中,如何获取$(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”]”)获取数量。


//这里我给你一个ID div。你也可以使用class
//绑定#getChild div上的单击事件
$('#getChild')。在('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"]');
}

函数deleteline($this){
$($this.parent().find('input[id~=“Qty”]”);
}

为什么不使用jQuery事件API

// make it as specific as you need
$('div').click(function() {
    // do something
});

您可以使用jQuery中的函数来获取父级。在本例中,您还可以使用该函数获取上一个元素。

您可以在jQuery()中使用CSS选择器

你的例子是:

$(this).siblings("input[id*='Qty']")
这将返回与$(this)处于同一级别的所有输入,这些输入的id中有一个数组“Qty”。如果只需要第一个,请将.first()添加到行的末尾,即:

$(this).siblings("input[id*='Qty']").first()
您将希望使用jQuery提供的

以下是我编造的一些代码:


编辑:所有其他答案似乎都使用了,这实际上不起作用……

我更喜欢从HTML标记中删除onclick,因为我喜欢以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"));
    });

});

$(函数(){
$(“.divtoCheck”)。单击(函数(){
var child=$(this.parent().find(“输入[id*='Qty']”)
警报(child.attr(“id”));
});
});

工作示例

如果将脚本放在脚本块或文件中而不是内联,则会更容易。请记住,您仍然可以使用.filter缩小所需的div。例如,在此单击事件中:
var divQty=$(this).children().filter(函数(i){return$(this).attr(“name”).indexOf(“Qty”)>=0;})
甚至
var divQty=$(this.prev().filter(函数(i){return$(this.attr(“name”).indexOf(“Qty”)>=0;})
<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"));
    });

});