父元素选择问题?

时间:2010-06-09 07:21:42

标签: javascript jquery jquery-selectors

我的HTML就是这样的

<div id="mydiv" class="common">
      <input type="text" id="text1" value="" />
      <input type="text" id="text2" value="" />
</div>

我正在为文本框的onclick事件分配一个函数,就像这个

$(document).ready(function() {
      $(".common input").click(function() {

          //////// What I am trying to do is access the id of its parent 
                // in this case it is "mydiv"
          alert($(this:parent).attr('id'));
});

但它不起作用

4 个答案:

答案 0 :(得分:6)

尝试$(this).parent().attr('id');

答案 1 :(得分:2)

您最好使用事件委派,并且只在父<div>上有一个事件处理程序。通过减少所需的事件处理程序的数量,以及用更简单和更快的ID选择器替换子代和元素选择器,这将更有效。此外,在事件处理函数中,您可以自动引用您感兴趣的两个元素(通过evt.targetthis),而无需进行任何遍历。

$(document).ready(function() {
    $("#mydiv").click(function(evt) {
         if (evt.target.tagName.toLowerCase() == "input") {
             alert("Clicked input with ID " + evt.target.id);
             alert("Parent ID: " + this.id);
         }
     });
});

答案 2 :(得分:1)

将其更改为以下

$(document).ready(function() {
      $(".common input").click(function() {

        var divId =  $(this).parent().attr('id'));
        alert(divId);
});

答案 3 :(得分:1)

$(document).ready(function() {
    $(".common input").click(function() {
        alert( $(this).parent().attr('id') ); // <- Use $(this).parent()
    }); // <- don't forget to close this function too
});