在Shadowbox内/内调用Jquery

时间:2012-11-01 17:58:59

标签: jquery shadowbox

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

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

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

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

但是当我点击时,没有任何反应。上述两个函数都包含在自己的文档就绪块中。我在脚本的开头调用Shadowbox.init,效果很好。它只是忽略了里面的jQuery事件。有人可以帮忙吗?

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

3 个答案:

答案 0 :(得分:2)

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

例如:

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

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

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

答案 1 :(得分:2)

试试这个:

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

这会有所帮助。 Bcoz当这段代码在html中没有 #submitPosition 的时候。 但是现场将解决这个问题。

答案 2 :(得分:0)

我看到两个选项:

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'); } 
    });
});