在控制台中打印“aaa”,但我无法通过点击$(“#test”)来打印“bbb”。
我犯的那个错误?欢迎任何建议。谢谢。 抱歉我的英语不好。
main.js:
$("#load").click(function () {
$.post("second.php",function(data){
$('#result').html(data);
});
return false;
});
main.html中:
...
<div id="result"></div>
...
second.php返回:
<script>
$(document).ready(function() {
try
{
console.log("aaa");
$("#test").click(function () {
console.log("bbb");
return false;
});
}catch(e){}
});
</script>
<div>hello</div>
<a id="test" href="#">Test</a>
答案 0 :(得分:1)
问题是主页中已经出现document.ready
。这意味着即使包含在document.ready
中,AJAX中的任何代码也会立即触发。如果代码在它引用的html之前,它将在html存在之前触发
如果您将代码放在相同的html之后,它将起作用。
另一种方法是使用on()
将事件处理程序委托给页面加载时不存在的未来元素。您可以在主页面中使用on()
并在主页加载时运行它
委托示例
$(document).on('click','#test', function(){
console.log('bbbb');
return false;
});