1

我正在使用 slimbox ( http://www.digitalia.be/software/slimbox ) 一个非常流行的 jQUery 轻量级灯箱。

我过去经常使用它,但是现在我有点卡住了。我有一个通过 AJAX 加载的表单,因此我需要使用该.on()功能来激活 slimbox。

但我无法让它工作。我查看了 slimbox 代码,它对我来说没有多大意义。我在我的:

$("#content.settings").on("click","div.scroll a.slimbox", function (e) {
        e.preventDefault();
        $(this).slimbox();
    });

这有效,但仅在第二次单击时,由于某种原因,它需要在同一个对象上单击两次才能起作用。有任何想法吗?

4

2 回答 2

3

问题是当第一次单击slimbox元素时尚未在元素上初始化,当您第一次单击它时,它会被初始化,然后随后的单击工作正常。

一种可能的解决方案是在小部件初始化后触发点击事件

$("#content.settings").on("click","div.scroll a.slimbox", function (e) {
    var $this = $(this);
    e.preventDefault();
    if(!$this.data('slimboxed')){
        $this.slimbox().data('slimboxed', true).click();
    }
});
于 2013-08-05T12:35:26.957 回答
2

一种解决方法是在 ajax 请求完成后再次调用插件。所以在你的成功方法中添加这个

$("#content.settings div.scroll a.slimbox").slimbox();
于 2013-08-05T12:36:57.963 回答