0

这是我的 HTML 代码:

<a href="#" class="menu_item"><img src="Home-48.png" alt="education" /></a>
<br /><br />
<a href="#" class="menu_item"><img src="Shield_48.png" alt="education" /></a>
<br /><br />
<a href="#" class="menu_item"><img src="Education-48.png" alt="education" /></a>
<br /><br />
<a href="#" class="menu_item"><img src="Money-Bag-48.png" alt="education" /></a>

这是我的 Jquery 代码:

$(document).ready(function(){
    $('.menu_item1').click(function (){
        $('#custom_menu_loading_section').fadeIn(800, function (){
            $('#custom_menu').load('education.html', {}, function () { $( "#accordion" ).accordion({ heightStyle: "fill" }); });
        });
    });
});

我希望当我单击图像时education.html加载到 中$("#custom_menu"),但它只能工作一次,例如,当我单击第一个图像时它可以正常工作,但之后当我单击第二个图像时它不起作用!?为什么?


我的目标:我想要一个菜单​​项(例如 Home、About、contact 等),当用户点击它时,jquery 会加载外部文件的内容(home.html、about.html、.. . ) 进入“#custom_menu”,显示“#custom_menu_loading_section”的加载效果。

4

2 回答 2

1

试试Live而不是点击。

从文档:

为现在和将来匹配当前选择器的所有元素附加一个事件处理程序。

于 2012-12-28T06:41:59.590 回答
0

来自 jQuery 团队的注释:

jQuery.fn.live() 已弃用;jQuery.fn.die() 已弃用

原因: .live() 和 .die() 方法在 1.7 中由于其性能和可用性缺陷而被弃用,不再受支持。

解决方案:使用 .on() 或 .delegate() 重写对 .live() 的调用。.live() API 文档中提供了这样做的说明。

所以改用这个:

$(document).ready(function () {
     $(document).on('click', '.menu_item1', function () {
          // do something
     });
});
于 2012-12-28T18:56:29.270 回答