从PHP返回的JQuery链接按钮不起作用,但如果没有,则确实有效

时间:2012-04-09 12:26:07

标签: php json jquery

我有一个在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){     警报('已被点击');     });

3 个答案:

答案 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; - 您最喜欢的新网站!

希望这有帮助!