我对此很陌生,所以请耐心等待......
假设我有这个javascript代码
$(document).ready(function() {
$("a").click(function() {
alert("Hello world!");
});
});
我理解它的方式,此代码将“捕获”任何链接选择并发布警告框。通常情况下这很好。
现在,在同一页面上我还有一个表,在提交时,我正在捕获表单提交并使用JQuery将数据添加到用户显示,同时将数据发送到服务器。
以下是截取帖子请求的代码(主要来自Railscasts #136)
jQuery.ajaxSetup({
'beforeSend': function(xhr) {
xhr.setRequestHeader("Accept", "text/javascript")
}
})
jQuery.fn.submitWithAjax = function() {
this.submit(function() {
$.post(this.action, $(this).serialize(), null, "script");
return false;
})
return this;
};
$(document).ready(function() {
$("#new_ride_form").submitWithAjax();
})
以下是渲染部分内容的代码......
$("#add_new_ride").before("<%= escape_javascript(render(:partial => @ride)) %>");
$("#ride_<%=@ride.id %>").effect("highlight", {color: '#aaffaa'}, 2000);
$("#new_ride_form")[0].reset();
这是在部分
生成的一个表格单元格中创建链接的代码<td><%= link_to 'remove', ride_url(ride),
:id => :destroy_ride,
:method => :delete,
:href => delete_ride_url(ride) %>
</td>
现在,当我提交表单,然后单击新创建的表行中的“删除”链接时,它只是提交删除请求。用于创建“Hello World”警告框的javascript不会被执行。
但是,如果我提交表单,创建新表格行,然后手动刷新页面,然后点击新创建的表格行中的“删除”链接,即“Hello World”警告框按预期显示。
这里发生了什么,我需要在获得预期行为之前手动刷新?
是否有一个“document.ready”事件或者我需要在使用AJAX添加表格行之后触发,以告诉代码“嘿,这里有一些新东西你需要注意”。< / p>
谢谢!
顺便说一句,我在Rails和JQuery中编码,但我不确定它是否重要。
答案 0 :(得分:4)
听起来您想使用jQuery.live
代替jQuery.click
。区别在于jQuery.click
将绑定所有当前 <a>
元素的click事件,jQuery.live
将绑定所有当前和未来 elements。
$(document).ready(function() {
$("a").live("click", function() {
alert("Hello world!");
});
});