2015-09-14 3 views
2

Добрый день. У меня есть код. Насколько я понимаю, щелчок2 должен получить идентификатор «Третий», так как он ищет детей. Но так или иначе, он всегда получает идентификатор «Первый». Как получить «Третий»?Предполагается получить ребенка, но каким-то образом получает родителя 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, поэтому не имеет идентификатора, поэтому clicked2 может только быть 'this.id' –

ответ

1

Добавить это var clicked2 = $(this).children("button").next().attr("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() возвращает все ДЕТСКО, так что вам нужно адресовать право один:

var clicked2 = $(this).children().next().attr("id"); 
Смежные вопросы