【问题标题】:javascript event updatejavascript 事件更新
【发布时间】:2012-08-13 14:38:58
【问题描述】:

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

我尝试了 live()、on()、livequery()。没有任何效果。

如何更新事件?

我的输入自动完成字段:

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

我要换data-autocomplete-source

我接下来要参加的活动(由咖啡脚本生成)

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

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

【问题讨论】:

    标签: javascript jquery-ui jquery livequery


    【解决方案1】:

    jQuery 的.data 只从data-* 属性中读取一次(第一次在元素上调用.data 以获取值)。 .attr 更新元素上的属性,但是 jQuery 的 .data 已经缓存了该值。如果您想更新它,请尝试改用.data

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

    【讨论】:

    • 5 分钟前也明白这一点。感谢您的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多