jQuery - 根据名称选择器获取子输入

时间:2012-04-30 15:37:10

标签: jquery

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

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

在我的删除线功能中,如何获取名称中包含Qty的$(this)父项的子项?

在这个例子中,我希望得到ProdQ​​ty输入框:

<div>
    <input id="PrdQty" type="hidden" value="1">
    <div onclick="deleteline($(this));">
</div>

编辑: 此页面通过ajax调用多次包含在另一个页面中。 因此,如果我为可点击的div分配一个ID,那么在第二次将此代码注入父级后,它将导致冲突。

结果,我使用了下面的建议,保持内联onclick并且我使用了:sender.parent()。find('input [id * =“Qty”]')

5 个答案:

答案 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"));
    });

});

工作样本http://jsfiddle.net/gKnf3/10/

答案 4 :(得分:0)

您将需要使用jQuery提供的attribute contains selector

以下是我摆弄的一些代码:http://jsfiddle.net/luhn/RrczZ/

修改:所有其他答案似乎都在使用attribute contains word selector,这实际上无法正常工作....