将click事件附加到childnode不起作用,但是直接对ID有效吗?

时间:2016-11-29 12:58:19

标签: javascript jquery

当我尝试通过访问子节点来定位特定元素时,我遇到了困境点击事件将无法工作但如果我使用getElementById然后通过它附加它将工作但我需要理想情况下通过子节点。下面是我的代码。

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');
        };
    }

 }

});

1 个答案:

答案 0 :(得分:0)

我建议你使用另一种方法。您当前的实现使您的代码严格依赖于HTML的结构。如果你换过最轻微的物品,它就会破裂。您可以在div中添加图像,图标或包装元素。 如果我是你,我会以不同的方式引用它们。 Sudo代码我没有测试或运行:

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');
});