【问题标题】:Make this widget for jQuery-plugin work?让这个用于 jQuery 插件的小部件工作?
【发布时间】:2013-03-04 13:18:03
【问题描述】:

我正在使用 jQuery 插件 Gridster。

我制作了一个 add_widget 按钮,用于添加一个新的小部件。这个小部件也可以再次删除。

所有这些都正常工作。但是,当您单击标题时,它应该会触发一个滑动框。但是这个滑动框不适用于新添加的小部件,仅适用于从一开始就存在的小部件。

帮助!!!!

看这个小提琴: http://jsfiddle.net/ygAV2/

我怀疑:

添加框部分

//add box
$('.addbox').on("click", function() { 
gridster.add_widget('<li data-row="1" data-col="1" data-sizex="2" data-sizey="1"><div class="box"><div class="menu"><header class="box_header"><h1>HEADER 5</h1></header><div class="deleteme"><a  href="JavaScript:void(0);">delete me ;(</a></div></div></li>', 2, 1)

});

和滑动框部分:

// widget sliding box

 $("h1").on("click", function(){
   if(!$(this).parent().hasClass('header-down')){
      $(this).parent().stop().animate({height:'100px'},{queue:false, duration:600, easing: 'linear'}).addClass('header-down');
   } else{
      $(this).parent().stop().animate({height:'30px'},{queue:false, duration:600, easing: 'linear'}).removeClass('header-down');
   }
});



$(document).click(function() {
    if($(".box_header").hasClass('header-down')){
        $(".box_header").stop().animate({height:'30px'},{queue:false, duration:600, easing: 'linear'}).removeClass('header-down');
}
});

$(".box_header").click(function(e) {
    e.stopPropagation(); // This is the preferred method.
           // This should not be used unless you do not want
                         // any click events registering inside the div
});

【问题讨论】:

    标签: javascript jquery html gridster


    【解决方案1】:

    不推荐使用.live()http://api.jquery.com/live/

    因此,使用正确的方式,.on(event, selector, handler) 处理您所有的 click 事件。

    你会达到你想要的结果。

    这是一个代码sn-p

    $(document).on("click", 'h1', function() {
        if (!$(this).parent().hasClass('header-down')) {
            $(this).parent().stop().animate({
                height: '100px'
            }, {
                queue: false,
                duration: 600,
                easing: 'linear'
            }).addClass('header-down');
        } else {
            $(this).parent().stop().animate({
                height: '30px'
            }, {
                queue: false,
                duration: 600,
                easing: 'linear'
            }).removeClass('header-down');
        }
    });
    

    这里

    //remove box
    $(document).on('click', ".deleteme", function () {
        $(this).parents().eq(2).addClass("activ");
        gridster.remove_widget($('.activ'));
        $(this).parents().eq(2).removeClass("activ");
    });
    

    还有这里

    $(document).on("click", ".box_header", function (e) {
        e.stopPropagation(); // This is the preferred method.
        // This should not be used unless you do not want
        // any click events registering inside the div
    });
    

    我已经更新了你的 jsfiddle:http://jsfiddle.net/ygAV2/2/

    【讨论】:

    • 这太棒了!...非常感谢!我花了两天时间解决这个问题
    • 没问题,有时另一双眼睛就是答案。
    猜你喜欢
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 2011-01-25
    • 2021-08-26
    • 1970-01-01
    相关资源
    最近更新 更多