javascript事件更新

时间:2012-08-13 14:38:59

标签: javascript jquery-ui jquery livequery

我的ui-autocomplete应该将ajax请求发送到不同的路径。 我的脚本在更改选择事件上更改此路径。但事件不会更新并向旧网址发送请求。

我试过live(),on(),livequery()。什么都行不通。

如何更新活动?

我的输入自动填充字段:

<input class="specialization_names ui-autocomplete-input" data-autocomplete-source="/specializations">

我正在改变data-autocomplete-source

事件我正在接下来的方式(由coffeescript生成)

_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()或插入实时查询

此代码更改网址上的代码。

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);
  });
}

有没有办法手动刷新一次事件?

1 个答案:

答案 0 :(得分:2)

jQuery的.data仅从data-*属性读取一次(第一次在元素上调用.data来获取值)。 .attr更新元素的属性,但jQuery的.data已缓存该值。您要更新它,请尝试使用.data

return $(this).siblings('.specialization_names').data("autocomplete-source", "/specializations/" + scope_id);