我的 ui-autocomplete 应该将 ajax 请求发送到不同的路径。 我的脚本在更改选择事件时更改此路径。但事件不会更新并将请求发送到旧网址。
我尝试过 live()、on()、livequery()。没有任何效果。
如何更新事件?
我的输入自动完成字段:
<input class="specialization_names ui-autocomplete-input" data-autocomplete-source="/specializations">
我正在更改data-autocomplete-source
接下来我要暴饮暴食的事件(由coffescript生成)
_ref = $('.specialization_names');
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
input = _ref[_i];
$(input).on('focus', function() {
return $(input).catcomplete({
source: $(input).data('autocomplete-source')
});
});
}
或将 on()
更改为 live()
或插件 livequery
此代码在选择时更改 url。
var select, _i, _len, _ref;
_ref = $('.resume_scopes');
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
select = _ref[_i];
$(select).on('change', function() {
var scope_id;
scope_id = $(this).children("option:selected").attr('value');
return $(this).siblings('.specialization_names').attr("data-autocomplete-source", "/specializations/" + scope_id);
});
}
有没有办法手动刷新一次事件?
最佳答案
jQuery 的 .data
仅从 data-*
属性读取一次(第一次在元素上调用 .data
来获取值(value))。 .attr
更新元素上的属性,但 jQuery 的 .data
已缓存该值。如果您想更新它,请尝试使用.data
。
return $(this).siblings('.specialization_names').data("autocomplete-source", "/specializations/" + scope_id);
关于JavaScript 事件更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11936545/