动态创建列表的这个选择器也引用父级

时间:2013-07-26 06:03:14

标签: javascript jquery

 <ul id="parent">

 </ul>

 <script>
   var li =$('<li onclick="clicked(this)"/>').appendTo($('#parent'));
   var span=$('<span/>').text('first').appendTo(li);  
   var ul1=$('<ul onclick="clicked(this)"/>').appendTo(li);
   var li1=$('<ul onclick="clicked(this)"/>').appendTo(ul1);
   var span1=$('<span/>').text('second').appendTo(li1);   

   function clicked(ref)
   {
      alert($(ref).children('span').text());
   } 
</script>

我的问题是,当我点击第二个时,警告框会弹出2次并显示第一个和第二个。但我只想要第二个。

我如何仅引用li1

3 个答案:

答案 0 :(得分:1)

您将li1作为孩子添加到另一个li。我不知道这是不是你想要的,但你不应该这样做。这也是你得到两个警报的原因。触发两个onclick处理程序。

答案 1 :(得分:0)

您需要像这样进行更改

 var li1 =$('<li onclick="clicked(this)"/>').appendTo($('#parent'));

附加到父元素<ul id="parent">

HTH

答案 2 :(得分:0)

你有一个示例页面或小提琴,所以我们可以看到你想要做什么输出? 我认为您应该将代码重写为以下内容:

$('<li>')
    .appendTo($('#parent'))
    .click(function(){
     clicked($(this));
    }).append(
        $('span').text('first')
     );

  function clicked(ref)
     {
         alert(ref.text());
     }

无论如何,你似乎要将LI附加到另一个li中,你应该将它附加到父级ul