jQuery替换DIV - 不适用于1.11

时间:2015-07-24 20:20:33

标签: javascript jquery

我正在尝试将隐藏的div容器中的内容加载到活动容器中。这应该是这么简单。我使用旧的jQuery工作的代码很好,但最新版本已经破解了。我在这里缺少什么?

这是我在JSFiddle中的代码 http://jsfiddle.net/poaw07w4/

$('.campuslink').live('click', function () {
var id = $(this).attr("id").replace(/^.(\s+)?/, "");
var contentTobeLoaded = $("#faq_" + id).html();

$('#campusfaq').fadeOut(600,function(){
    $('#campusfaq').html(contentTobeLoaded).fadeIn(500, function () {
    });
});

e.preventDefault();

3 个答案:

答案 0 :(得分:1)

版本1.7中不推荐live method,版本1.9中删除了on method。您可以使用http://jsfiddle.net/poaw07w4/3/创建委派事件。 (别忘了e参数):

$(document).on('click', '.campuslink', function (e) {

演示:http://plnkr.co/edit/E3MPAt39LCCswg9N4V9T?p=preview

注意:在文档元素上绑定事件对应于live的工作方式。如果可能,您应该使用更靠近发生事件的元素的元素,以减少开销。

答案 1 :(得分:0)

尝试使用.on('点击')代替.live('点击')

https://jsfiddle.net/dotnetmensch/poaw07w4/1/

$('.campuslink').on('click', function () {
var id = $(this).attr("id").replace(/^.(\s+)?/, "");
var contentTobeLoaded = $("#faq_" + id).html();

$('#campusfaq').fadeOut(600, function () {
    $('#campusfaq').html(contentTobeLoaded).fadeIn(500, function () {});
});

e.preventDefault();

});

答案 2 :(得分:0)

自JQuery 1.7(more here)以来,不推荐使用live()方法。如果用on()方法替换它,它应该工作正常(还要注意preventDefault()被移动):

$('.campuslink').on('click', function (e) {
    e.preventDefault();
    var id = $(this).attr("id").replace(/^.(\s+)?/, "");
    var contentTobeLoaded = $("#faq_" + id).html();

    $('#campusfaq').fadeOut(600,function(){
         $('#campusfaq').html(contentTobeLoaded).fadeIn(500, function () {
    });
});