0

私のui-autocompleteは、ajaxリクエストを別のパスに送信する必要があります。私のスクリプトは、changeselectイベントでこのパスを変更します。ただし、イベントは更新されず、古いURLにリクエストが送信されます。

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

またはプラグインlivequeryに変更on()するlive()

このコードは、選択時に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);
  });
}

イベントを1回手動で更新する方法はありますか?

4

1 に答える 1

2

jQueryは、属性から1回.dataだけ読み取ります(値を取得するために要素を初めて呼び出すとき)。 要素の属性を更新しますが、jQueryは値をキャッシュしています。更新したい場合は、代わりに使用してみてください。data-*.data.attr.data.data

return $(this).siblings('.specialization_names').data("autocomplete-source", "/specializations/" + scope_id);
于 2012-08-13T15:19:39.800 に答える