pricelistfilters.html.erb: -6ren">
gpt4 book ai didi

javascript - 具有事件的渲染部分的后响应不起作用

转载 作者:数据小太阳 更新时间:2023-10-29 05:33:55 25 4
gpt4 key购买 nike

在 ruby​​ on rails 中,我正在尝试更新 2 个部分。

show.html.erb:

<div id="filters"><%= render :partial => "pricelistfilters" %></div>

pricelistfilters.html.erb:

<% @properties.each do |prop| %>
#Render the page on properties (and the newproperties)
#<select ...><option>...</option><option>...</option>
#</select>
<% end %>

products.js --> 渲染部分的事件

$(window).ready(function(){
selectionchanges();
});
function selectionchanges(){
$('#filters select').change(function(){
//Doing stuff to send with ajax

//Ajax:
$.ajax({
url: document.URL,
type: 'POST',
data: params
});
});
}

products_controller.rb --> 处理所做更改的代码

def show
#Changing the properties (and the pricelist properties)
@properties #is filled
@newproperties #is filled
respond_to do |format|
format.html
format.js
end
end

show.js.erb

$('#filters').html('<%= escape_javascript(render :partial => "pricelistfilters") %>');
selectionChanges();

我渲染的项目非常好。但是,当我对呈现的项目得到正确的响应时,它就不再发送 ajax 了。所以我选择的项目上的事件消失了,而我确定我已经用“selectionchanges();”重置了它们。在我的 show.js.erb 文件的末尾?

谁能看到解决这个问题的方法?

提前问候和感谢

最佳答案

尝试在 product.js 上使用 jquery 的 live 函数,如下所示:

$(window).ready(function(){
selectionchanges();
});
function selectionchanges(){
$('#filters select').live('change', function(){
//Doing stuff to send with ajax

//Ajax:
$.ajax({
url: document.URL,
type: 'POST',
data: params
});
});
}

基本上,您要替换您首先将事件“更改”绑定(bind)到的 HTML Dom 元素。有了 live,即使替换了元素,jQuery 也会为你重新绑定(bind)。

希望对您有所帮助!

关于javascript - 具有事件的渲染部分的后响应不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13956453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com