jquery的;
情况 - 只是从纯javascript升级到jquery - 由浏览器不一致提示。
在加载时,页面会在div中显示ajax请求的结果,其中包含一个OK按钮,底部为<input name="srd_button_ok" type="button" value="OK">
。
单击“确定”按钮未通过以下方式检测到:
$('[name*="srd_button_ok"]').click (function(){
alert("srd_button_ok clicked");});
然而,另一个'测试按钮'放置在同一页面上的单独div中,永久显示<input name="test_div" type="button" value="Test Div">
IS被检测到:
$('[name*="test_div"]').click (function(){
alert("test_dv clicked");});
以上两者
jQuery(document).ready(function(){ ....});
我错过了什么或做错了什么?
您的建议将不胜感激。
非常感谢,
Ivan Rutter
答案 0 :(得分:4)
请改为尝试:
$('[name*="srd_button_ok"]').live('click', function(){
alert("srd_button_ok clicked");
});
答案 1 :(得分:1)
问题是你的点击绑定发生在将单独的页面加载到div之前。你可以解决这两种方式:
使用'live'绑定click事件。
$('[name*="test_div"]').live('click', function(){ alert("test_dv clicked");});
您可以初始化点击回调中的点击次数。
$('#loading_div').load('some/url', function(data) {
$('#loading_div [name*="test_div"]').click(function(){ alert("test_dv clicked");});
});
答案 2 :(得分:0)
$()。click(处理程序)将事件处理程序绑定到DOM层次结构中的选定元素。在你的情况下,OK按钮不是DOM的一部分,因为它将被异步加载(AJAX)。
这里有两个解决方案。要么在AJAX加载完成后执行处理程序绑定代码,要么使用jQuery的.live()[docs]。