我有一个在jquery中不起作用的按钮。使用json对象将一个按钮从php传递给Jquery。我已经删除了所有其他代码只是要测试的按钮来尝试解决这个问题。 我创建相同的链接并将其放在我的页面上的PHP。单击链接时,会出现一个警报并起作用。
在同一页面上,我有一个额外的按钮,它是相同的按钮,但是这个按钮已经从PHP通过json返回到Jquery和 附加到div。这个链接/按钮不起作用?为什么是这样?两者看起来都一样!
希望有人可以就这里发生的事情提出建议
由于
从PHP返回的按钮
//Jquery basic test button for functionality (works if link button is already on HTML page)
$("[href='#test']").click(function() {
alert("has been clicked");
});
//JQuery extract of my code
var content;
$.each(data, function(i, item) {
content += item;
});
$(content).appendTo('#theframe');
},'json');
也尝试了
$.each(data, function(i, item) {
content += item;
});
$('#theframe').html(content);
},'json');
//php returned
$json[] = '<a href="#test">View Post</a>';
echo json_encode($json);
//php button on page
<a href="#test">View Post</a>
由于
在所有帖子的帮助下解决,谢谢! @ Anthony的例子添加了框架 $('#theframe')。on('click','[href =“#test”]',function(e){ 警报('已被点击'); });
答案 0 :(得分:3)
您需要使用jQuery on()或delegate()函数将click事件添加到动态添加的新页面元素(在页面加载后)。
如果您使用的是jQuery 1.7及更高版本,则应使用on():http://api.jquery.com/on/
如果您使用的是较旧版本的jQuery,请使用委托:http://api.jquery.com/delegate/
答案 1 :(得分:1)
.click()
函数仅将事件处理程序添加到代码运行时存在的元素,因此不会影响以后动态添加的任何元素。解决此问题的最简单方法是使用.on()
(jQuery 1.7+)或.delegate()
(1.7之前的)函数设置事件委派。 .on()
示例如下所示:
$('body').on('click', '[href="#test"]', function(e) {
alert('has been clicked');
});
答案 2 :(得分:1)
它不起作用的原因是你的文档就绪函数只触发一次。这意味着在通过ajax加载第二个按钮后,没有附加事件处理程序。
尝试使用“on”或“live”:
$("body").on("click", a[href="#target"], function(event){
alert("has been clicked");
});
http://api.jquery.com/on/&lt; - “on”
的文档http://api.jquery.com/&lt; - 您最喜欢的新网站!
希望这有帮助!