2012-07-18 56 views
0

假设我有一个名为index.php的页面,它包含一个div元素名称divContent,其中包含名为“msg”的按钮和另一个名为“show”的按钮。加载到div后Jquery Ajax错误

当我加载index.php两个按钮显示良好。我在我的页面上添加了jquery。当点击我的“味精”按钮时,它会显示“成功”味精

alert(“successful”);

。它的工作就像当我点击显示按钮(divContent外)时,它会通过ajax技术将另一个页面内容加载到我的divContent中。

$('#msg').click(function(e) { 
    alert("successful"); 
}); 
} //Whilst editing formatting - extra closing brace 

$('#show').click(function(e) { 
    $.ajax({ 
     type: "GET", 
     url: "test.php", 
     success: function(msg){ 
      $('#divContent').html(msg); 
     } 
    }); 
    e.preventDefault(); 
}); 


test.php 
-------- 
    <input type="button" id="msg" /> 

test.php包含一个与msg按钮相同的按钮,它存在于index.php中。我的概率是加载index.php时,点击msg按钮它显示成功的味精,但点击显示按钮时,它加载test.php的包含到divContent中,并点击msg按钮,它不显示“成功”的消息。什么是问题

+0

是否显示IE开发者工具中的“控制台”中的任何错误? – 2012-07-18 10:17:17

回答

0

这是因为您将点击绑定到所有现有的#msg元素,它不会在绑定时不存在的任何元素上工作。所以当你加载新的内容时,它没有绑定到它,你需要再次绑定它。

success: function(msg){ 
    $('#divContent').html(msg); 
    $('#msg').click(....); 
} 

OR,使用。对()方法:

发现这是一个祖先两者#msg按钮的元素,和一个事件绑定到它使用。对

$('.parent').on('click', '#msg', function(){ 
    alert("whatever"); 
}); 

这将确保任何作为.parent的孩子的#msg,无论它何时被创建,都会有一个点击事件。

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

+0

谢谢。但我为了演示目的写了这个bcoz目的是相同的,但代码是其他。我想单击提交按钮时绑定表单元素提交事件。如何用ON方法绑定我的表单元素。 – user1523291 2012-07-18 10:42:23

+0

仅当内容已显示在页面上时,您才需要绑定您的点击。这意味着在你的成功函数中,'$('#divContent')。html(msg);' – Rodik 2012-07-18 10:44:26

+0

提交将不适用于ON方法,因为一些旧浏览器不会通过DOM冒泡提交事件。所以建议在加载元素时绑定点击。 – Rodik 2012-07-18 10:46:38

0

你第一次点击的功能有一个额外的右括号。

$('#msg').click(function(e) { 
    alert("successful"); 
}); 
} //<<Here