javascript - AJAX 加载不适用于脚本

标签 javascript jquery html ajax

我正在尝试创建一个网站,当文档加载完成时,HTML 代码会加载到一个 div 中。但是,悬停功能不适用于 AJAX 加载。请帮忙。

$(document).ready(function() {
    $('#sidebar').load('sidebar-main.php');

    $("#sidebar .section").hover(function() {
            $('#sidebar .section .left-mark').show();
        },function(){
            $('#sidebar .section .left-mark').hide();
        });
});

“sidebar-main.php”文件:

<div class='section' onclick='header()'><div class='left-mark'></div></div>

主 PHP 文件中的边栏:

<div id='sidebar'></div>

最佳答案

在新创建的元素上(引用.load()),您需要将事件处理程序委托(delegate)给您的#sidebar 祖先。

因此,改变这个:

$("#sidebar .section").hover(function() {
    $('#sidebar .section .left-mark').show();
},function(){
    $('#sidebar .section .left-mark').hide();
});

到:

$("#sidebar").on('mouseenter', '.section', function() {
    $('#sidebar .section .left-mark').show();
}).on('mouseleave', '.section',function(){
    $('#sidebar .section .left-mark').hide();
});

演示:

//
// instead on next line, for testing I added the next one
//
//$('#sidebar').load('1.php');
$('#sidebar').append("<div class='section' onclick='header()'>aa<div class='left-mark'>bb</div></div>");

$("#sidebar").on('mouseenter', '.section', function() {
    $('#sidebar .section .left-mark').show();
}).on('mouseleave', '.section',function(){
    $('#sidebar .section .left-mark').hide();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<div id='sidebar'></div>

关于javascript - AJAX 加载不适用于脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46383738/

相关文章:

javascript - 使用 Knockout 映射插件使用非规范化数据

javascript - 如果选中了 1 个以上的复选框,如何显示隐藏的按钮

jquery - 使用 jQuery 获取组合框的选定键/值

javascript - onmousedown 在动态生成的 html 元素上

javascript - "readyState === ' Interactive' "and "Jquery.ready() 之间的差异

javascript - 如何在 safari 扩展上获取选定的文本?

Javascript:获取 2 个或多个未声明变量中的任何一个的值

javascript - 为 Javascript 二进制搜索树编写递归添加方法

javascript - 调用具有节点列表特定索引值的函数

html - 响应芯片 - Materialise.css