2015-09-14 62 views
2

美好的一天。我有一个代码。据我的理解,clicked2应该得到id为“Third”,因为它正在寻找孩子。但不知何故,它始终得到ID“第一”。我如何获得“第三”?想要得到孩子,但不知何故得到父母的ID

<!DOCTYPE html> 
<html> 
<body> 

    <div class="menu" id="First"> 
     <button id="Second">eee</button> 
     <button id="Third">yyy</button> 
    </div> 
    <div class="holder"></div> 
    <script type="text/javascript" src="jquery.js"></script> 
    <script type="text/javascript"> 

      $(document).on('click', '.menu', function(e) { 
       var clicked = e.target.id || this.id; 
       var clicked2 = e.target.children.id || this.id; 
       var y = clicked2.replace(/\D/g, ''); 
       var x = clicked.replace(/\D/g, ''); 
       var w = 0; 

       $('.holder') .append('<BR>'+clicked+'<BR>'+clicked2); 

       }); 

    </script> 

</body> 
</html> 
+2

第一个问题:'e.target.children .id'将始终未定义,因为_element_.children是一个HTMLCollection,所以没有ID - 所以clicked2只能是'this.id' –

回答

1

添加此var clicked2 = $(this).children("button").next().attr("id") 它将返回第二个按钮的ID。

试试这个

$(document).on('click', '.menu', function(e) { 
var clicked = e.target.id || this.id; 
var clicked2 = $(this).children("button").next().attr("id") || this.id; 


var y = clicked2.replace(/\D/g, ''); 
var x = clicked.replace(/\D/g, ''); 
var w = 0; 

$('.holder') .append('<BR>'+clicked+'<BR>'+clicked2); 

    }); 

Demo Here

0

children()返回所有的儿童,所以你需要ADRESS正确的:

var clicked2 = $(this).children().next().attr("id");