0

好的,我们开始...

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

$(function() {


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

        addgroup();

    }); 

});


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

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

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

谁能帮我?

4

7 回答 7

4

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

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

请参阅以下模仿您的场景的小提琴,我想是这样的:

http://jsfiddle.net/U4xZj/

解释为什么,因为我认为 jquery 文档在这方面做得不是很好......基本上,如果你考虑一下你在使用“on”的方式上做了什么:

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

你是说,好的 jQuery,我想为下面的选择器“addgroupicon”创建一个事件处理程序。Jquery 立即转身,“棒极了”!#addgroundicon 恰好有零个与之匹配的项目。走开,别再打扰我了。但是首先用 $(document) 来做,jquery 会说,“哦,好的。我当然可以为文档创建一个点击事件处理程序。现在,如果你只希望我在某些元素导致点击时引发这个事件,那么请提供一个选择器,如果选择器匹配源元素,那么我会调用你的回调。” 说得通?

于 2012-04-18T05:17:18.637 回答
2

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

$(function() {


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

        addgroup();

    }); 

});
于 2012-04-18T04:46:43.690 回答
0
  1. 没见过$(function() {}),试试看$(document).ready({})

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

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

于 2012-04-18T04:50:26.467 回答
0

您可以使用.bind()方法而不是.live().

$(function() {    
    $('#addgroupicon').bind('click', function(event){
        addgroup();
    }); 
});
于 2012-04-18T04:52:07.060 回答
0

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

于 2012-04-18T04:54:03.063 回答
0

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

这是要走的路,

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

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

于 2012-04-18T05:12:42.687 回答
0

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

$('#addgroupicon').click(function(){
    $('#addgroupdialog').show();
}); 
于 2012-04-18T08:03:03.263 回答