jQuery:;这";can';找不到由.html()生成的元素

jQuery:;这";can';找不到由.html()生成的元素,jquery,this,Jquery,This,首先,如果题目不清楚,对不起 我正在尝试建立一个简单的顺序菜单。用户单击第一个选项,然后找到新的子选项。我认为代码本身就说明了问题 <div id="box"> Welcome text<br> <ul> <li class="option" id="opt1">Option 1</li> <li class="option" id="opt2">Option 2</li> </ul>

首先,如果题目不清楚,对不起

我正在尝试建立一个简单的顺序菜单。用户单击第一个选项,然后找到新的子选项。我认为代码本身就说明了问题

<div id="box">
Welcome text<br>
<ul>
    <li class="option" id="opt1">Option 1</li>
    <li class="option" id="opt2">Option 2</li>
</ul>
</div>

<script>
var nextText = "<p>Next text with two more options.</p><ul><li class='option' id='opt1a'>Option 1a</li><li class='option' id='opt1b'>Option 1b</li></ul>";

$("#box li").click(function() {
  var ev = $(this).attr('id');
  if (ev==="opt1") {
    $("#box").html(nextText);
  }
});
</script>

欢迎文本
    选项1 选项2
var nextText=“下一个文本,还有两个选项。

  • 选项1a
  • 选项1b
    • ”; $(“#box li”)。单击(函数(){ var ev=$(this.attr('id'); 如果(ev==“opt1”){ $(“#box”).html(nextText); } });
您正在将单击处理程序绑定到页面首次加载时存在的元素。以后添加的元素没有单击绑定。您可以在jQuery中使用委派解决此问题。在上:

$("#box").on("click", "li", function() {
    var ev = $(this).attr('id');
    if (ev = "opt1") {
        $("#box").html(nextText);
    }
});

您应该在html中呈现整个菜单,并相应地隐藏/显示它…非常感谢,Barmar。我试过你的例子,它对我有效。:-)