2012-08-13 90 views
0

我的ui-autocomplete應該發送ajax請求到不同的路徑。 我的腳本在更改選擇事件時更改此路徑。但事件不會更新並向舊網址發送請求。javascript事件更新

我試過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()或插件livequery

此代碼更改選擇的網址。

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

有沒有辦法手動刷新一次事件?

回答

2

jQuery的.data只能從data-*屬性中讀取一次(第一次調用.data時獲取該值的元素)。 .attr更新元素上的屬性,但jQuery的.data已緩存該值。它要更新它,請嘗試使用.data

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

就在5分鐘前也明白了。感謝解決方案。 – Michael 2012-08-13 15:30:17

+0

不客氣:-) – 2012-08-13 15:30:51