0

我有一个由 jquery 调用的简单 Shadowbox:

$('#statsButton').click(function() {
    thisContent = $('#userStats').html();
    Shadowbox.open({
        content: thisContent,
        player: "html"
    });
});

我有一个 div,在$('#userStats')那个应该在点击时发出警报的对象中:

$("#submitPosition").click(function(e) {
        alert('test');
});

但是当我点击时,什么也没有发生。上述两个函数都包装在它们自己的文档就绪块中。我Shadowbox.init在脚本的开头打电话,效果很好。只是它忽略了里面的jQuery事件。有人可以帮忙吗?

简短回顾:基本上我有 Shadowbox 和 HTML 播放器。我希望 jQuery 在该 HTML 播放器中按预期运行。

4

3 回答 3

2

如果您将内容动态加载到容器中,您应该使用 jQueryon()将事件绑定到内容内的对象,因为使用click()只会将事件绑定到现有的#submitPosition.

例如:

$('body').on('click', '#submitPosition', function(e) {
   alert('test');
});

此外,在具有相同 id 的页面上使用多个元素也不是一个好习惯。

http://api.jquery.com/on/

于 2012-11-01T18:13:32.737 回答
2

试试这个:

$(document).ready(function(){    
    $("#submitPosition").live('click',function(e) {
            alert('test');
    });
});

这会有所帮助。Bcoz 当这段代码初始化时,#submitPosition在 html 中不存在。但是live会解决这个问题。

于 2012-11-01T18:14:31.797 回答
0

我看到 2 个选项:

1) 在您的 userStat div 中,更改为:

$("#submitPosition").click(function(e) {
    alert('test');
}).click();

这实际上会调用你的回调函数。

2)使用shadowbox的onOpen事件:

$('#statsButton').click(function() {
    thisContent = $('#userStats').html();
    Shadowbox.open({
        content: thisContent,
        player: "html",
        onOpen: function(){ alert('test'); } 
    });
});
于 2012-11-01T18:24:41.620 回答