2016-11-29 3 views
0

Ich habe ein Dilemma, wenn ich versuche, ein bestimmtes Element durch den Zugriff auf Kindknoten Ziel klicken wird nicht funktionieren, aber wenn ich GetElementById dann anhängen, dass es funktioniert, aber ich muss es idealerweise tun, durch Kind-Knoten. Unten ist mein Code.Klickereignis an childnode anhängen funktioniert nicht, aber direkt an der ID funktioniert?

jQuery('#begin_consult').click(function(){ 
    jQuery('.cq-container').show(); 
    jQuery('#begin_consult').hide(); 
    if(jQuery('.option').hasClass('c_questions')){ 
     var y = document.getElementsByClassName('c_questions'); 
     for(var i = 0; i < y.length; i++){ 
      jQuery('.main-body').append(y[i].innerHTML); 

      var get_age_gparent = document.getElementsByClassName('age-check')[0]; 
      get_age_gparent.style = "display:block;"; 
      var get_age_parent = get_age_gparent.childNodes[1]; 
      var getOptionsDD = get_age_parent.childNodes[3]; 
      var getOptionsUL = getOptionsDD.childNodes[1]; 
      var getInputNo = getOptionsUL.childNodes[1]; 
      var getRadioBtnAge = getInputNo.childNodes[0]; 
      getRadioBtnAge.onclick = function(){ 
      alert('fffff'); 
     }; 
    } 

} 

}); 
+0

Sie wissen, Sie können nur das tun, '$ ('c_questions ') auf (' Klick', ...' – adeneo

+0

ich nicht das tun kann .. Die Klassenaltersprüfung wird an den Dombaum angehängt Ich versuche, einen Ereignishandler zu einem Optionsfeld hinzuzufügen, und ich möchte die Eingabe nicht anhand der ID abrufen, da ich diesen Code für mehrere Produkte wiederholen muss –

+0

Scheint, dass Sie [Event Delegation] (http://learn.jquery.com/events/event-delegation/) verwenden müssen, da Sie Elemente dynamisch mit 'append()' erstellen. – Satpal

Antwort

0

Ich schlage vor, Sie einen anderen Ansatz. Ihre aktuelle Implementierung macht Ihren Code streng von der Struktur Ihres HTML abhängig. Wenn Sie jemals auch nur den kleinsten Gegenstand ändern, wird es brechen. Sie fügen ein Bild, ein Symbol oder ein Element in ein Div ein. Wenn ich du wäre, würde ich sie auf eine andere Weise beziehen. Sudo Code ich habe nicht getestet oder lief.

var get_age_gparent = jQuery('.age-check').first(); 
get_age_gparent.css({'display':'block'}); 
var get_age_parent = get_age_gparent.find('.ageparent');//add new class on target 
var getOptionsDD = get_age_parent.find('.optionsdd');//add new class on target 
var getOptionsUL = getOptionsDD.find('.optionsUL');//add new class on target 
var getInputNo = getOptionsUL.find('.inputNo');//add new class on target 
var getRadioBtnAge = getInputNo.find('input[type=radio].btnage');//add btnage classname to target button 
getRadioBtnAge.click(function(){ 
alert('fffff'); 
}); 
Verwandte Themen