0

我有一个在 jquery 中不起作用的按钮。使用 json 对象将一个按钮从 php 传递到 Jquery。我已经删除了所有其他代码,只是测试按钮以尝试解决这个问题。我创建了相同的链接并将其放在我的 php.ini 页面上。当点击链接时,会出现一个警报并且有效。

在同一页面上,我有一个附加按钮,它是同一个按钮,但是这个按钮已经从 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) { alert('has been clicked'); });

4

3 回答 3

3

您将需要使用 jQuery on() 或 delegate() 函数将 click 事件添加到动态添加的新页面元素(在页面加载后)。

如果您使用的是 jQuery 1.7 或更高版本,您应该使用 on():http ://api.jquery.com/on/

如果您使用的是旧版本的 jQuery,请使用委托:http ://api.jquery.com/delegate/

于 2012-04-09T12:32:10.583 回答
1

.click()函数仅将事件处理程序添加到代码运行时存在的元素,因此不会影响以后动态添加的任何元素。解决这个问题的最简单的解决方案是设置事件委托,使用.on()(jQuery 1.7+)或.delegate()(1.7 之前的)函数。该.on()示例如下所示:

$('body').on('click', '[href="#test"]', function(e) {
    alert('has been clicked');
}); 
于 2012-04-09T12:33:29.173 回答
1

它不起作用的原因是您的文档就绪功能仅触发一次。这意味着在您的第二个按钮通过 ajax 加载后,没有附加事件处理程序。

尝试使用“on”或“live”:

$("body").on("click", a[href="#target"], function(event){
alert("has been clicked");
});

http://api.jquery.com/on/ <- “on”的文档

http://api.jquery.com/ <- 你最喜欢的新网站!

希望这可以帮助!

于 2012-04-09T12:33:50.287 回答