你能点击'jQuery中加载的内容吗?

Dan*_*Dan 2 jquery load jquery-click-event

我正在尝试创建一个页面,其中示例div是可点击的,因为它将在下面.

但是我试图这样做,如果用户点击徽标,它将使用加载重新加载原始内容.

发生此负载后,是否可以"点击"加载<div id="example">?我正在尝试此操作,并且在单击<div id="example">file.php中的已加载时无法发出警报

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Example</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {

    $("#example").click(function(){
        alert("You clicked me!");
    });

    $("#logo").click(function(){
        $("#main").load("file.php");
    });
});
</script>
    </head>

<body>
    <img id="logo" src="404.gif" />

    <div id="main">
        <div id="example">This is content.</div>
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

file.php包含

<div id="example">This is loaded content that can't be clicked?</div>
Run Code Online (Sandbox Code Playgroud)

isN*_*247 6

问题

问题是.click()只在那个时刻将事件绑定到DOM中存在的元素.这意味着当您向页面添加新元素时,它不会绑定一个事件处理程序.

如果您使用的是jQuery 1.7+,而不是.click()在代码中使用.on().

$("#main").on('click', '#example', function(){
    alert("You clicked me!");
});
Run Code Online (Sandbox Code Playgroud)

...或者使用旧版本的jQuery .live()代替:

$("#example").live('click', function(){
    alert("You clicked me!");
});
Run Code Online (Sandbox Code Playgroud)

这将确保添加到DOM的新元素也将绑定到它们的事件处理程序.