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。我试过你的例子,它对我有效。:-)