Javascript无法在JQuery中加载DIV

时间:2012-04-18 04:35:17

标签: php javascript jquery ajax

好的,我们走了......

我有一个页面XYZ,其中有一个按钮,可以调用我的函数:

$(function() {


    $('#addgroupicon').on('click', function(event){

        addgroup();

    }); 

});


function addgroup()
{
$('#addgroupdialog').show();
}

// #addgroupdialog和#addgroupicon在加载的页面内,上面的代码在我加载到index.html标题中的.js文件中

现在我将这个页面XYZ加载到带有.load()函数的div中,但是当我点击按钮时没有任何反应。我还尝试添加onclick ='javascript:addgroup();'按钮,没有成功。

任何人都可以帮助我吗?

7 个答案:

答案 0 :(得分:4)

您没有以正确的方式使用"on"。它应该像这样使用:

$(document).on("click", "#addgroupicon", function(event){
        addgroup();
}); 

请参阅下面的模仿您的场景的小提琴,我想的确切地说:

http://jsfiddle.net/U4xZj/

解释为什么,因为我不认为jquery文档在这方面做得很好...... 基本上,如果你以你使用它的方式思考你正在做什么:

$('#addgroupicon').on('click', function(event){

你说,好的jQuery,我想为下面的选择器“addgroupicon”创建一个事件处理程序。 Jquery迅速转身,变得“棒极了!” #addgroundicon具有与之匹配的ZERO项。走开,停止打扰我。但是首先用$(document)来做,jquery说,“哦,好吧。我当然可以为文档创建一个click事件处理程序。现在,如果你只想让我在某些元素引起点击,然后请提供一个选择器,如果选择器与源元素匹配,那么我将调用你的回调。“有意义吗?

答案 1 :(得分:2)

试试这个。如果您在加载页面后调用元素,则需要使用.live()。

$(function() {


    $('#addgroupicon').live('click', function(event){

        addgroup();

    }); 

});

答案 2 :(得分:0)

  1. 从未见过$(function() {}),请尝试使用$(document).ready({})

  2. 使用$(document).ready({}),你的js代码将在加载页面后运行,如果还没有addgroupicon,则click事件将不会绑定到它。因此,如果您稍后添加addgroupicon,则必须在添加后运行该代码。

  3. 为什么不使用简单的$('#addgroupicon').click(function(event){})

答案 3 :(得分:0)

您可以使用.bind()方法代替.live()

$(function() {    
    $('#addgroupicon').bind('click', function(event){
        addgroup();
    }); 
});

答案 4 :(得分:0)

尝试使用live()而不是bind()作为按钮。

答案 5 :(得分:0)

我不太明白你的问题,但是如果live()解决了你的问题而且你没有使用它,因为它被弃用了。

这是要走的路,

$("body").on("click", "#addgroupicon", function(event){
    addgroup();
});

<强>参见: http://api.jquery.com/on/

答案 6 :(得分:0)

好奇你为什么要使用.on()不这样做吗?

$('#addgroupicon').click(function(){
    $('#addgroupdialog').show();
});