3

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

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

在我的 deleteline 函数中,如何获取名称包含 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"]')

4

5 回答 5

4

您可以在 jQuery ( http://api.jquery.com/category/selectors/ )中为此使用 CSS 选择器

所以你的例子是:

$(this).siblings("input[id*='Qty']")

这将返回与 $(this) 相同级别的所有输入,它们的 id 中具有“Qty”作为数组。如果您只想要第一个添加 .first() 到行尾,即:

$(this).siblings("input[id*='Qty']").first()
于 2012-04-30T15:43:45.770 回答
2

为什么不使用 jQuery 事件 API?

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

你可以使用.parent([selector])jQuery中的函数来获取父级。在此示例中,您还可以使用该.prev([selector])函数来获取前一个元素。

于 2012-04-30T15:40:53.073 回答
1

我更喜欢从 HTML 标记中删除 onclick,因为我喜欢以一种平淡无奇的方式编写它。我会在 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/

于 2012-04-30T15:49:40.323 回答
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"]');
}
于 2012-04-30T15:40:16.257 回答
0

您将需要使用jQuery 提供的属性 contains 选择器。

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

编辑: 所有其他答案似乎都在使用该属性 contains word selector,这实际上不起作用....

于 2012-04-30T15:43:51.137 回答