好的,我们走了......
我有一个页面XYZ,其中有一个按钮,可以调用我的函数:
$(function() {
$('#addgroupicon').on('click', function(event){
addgroup();
});
});
function addgroup()
{
$('#addgroupdialog').show();
}
// #addgroupdialog和#addgroupicon在加载的页面内,上面的代码在我加载到index.html标题中的.js文件中
现在我将这个页面XYZ加载到带有.load()函数的div中,但是当我点击按钮时没有任何反应。我还尝试添加onclick ='javascript:addgroup();'按钮,没有成功。
任何人都可以帮助我吗?
答案 0 :(得分:4)
您没有以正确的方式使用"on"
。它应该像这样使用:
$(document).on("click", "#addgroupicon", function(event){
addgroup();
});
请参阅下面的模仿您的场景的小提琴,我想的确切地说:
解释为什么,因为我不认为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)
从未见过$(function() {})
,请尝试使用$(document).ready({})
使用$(document).ready({}),你的js代码将在加载页面后运行,如果还没有addgroupicon
,则click事件将不会绑定到它。因此,如果您稍后添加addgroupicon
,则必须在添加后运行该代码。
为什么不使用简单的$('#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();
});