簡體   English   中英

jQuery 函數:將回調函數作為可選參數傳遞給另一個函數

[英]jQuery function: pass callback functions as optional arguments to another function

我編寫了以下便利函數,讓我可以輕松地將 jquery UI 自動完成功能放在元素上。

jQuery.fn.bindAutocomplete = function() {
  $(this).each( function() {
    $(this).autocomplete({
      source: $(this).data('autocomplete-source')
    });
  });
}

我總是使用將data-autocomplete-source附加到元素的約定,這樣我就可以像這樣在任何地方調用它:

$('input#name').bindAutocomplete();

現在,自動完成功能可以將回調函數作為選項散列后的可選參數。 我幾乎從不需要弄亂它,但我發現在少數情況下我想傳遞成功函數。 顯然,當我需要傳遞回調函數時,我可以重寫完整的自動完成函數,但我寧願只重寫我的bindAutocomplete()函數,以便它可以接受可選的回調函數並將它們傳遞給autocomplete()

那么,你怎么做呢?


更新

我嘗試了這個,基於一個接近但不完全的答案:

jQuery.fn.bindAutocomplete = function(callbacks) {
  $(this).each( function(callbacks) {
    options = $.extend({source: $(this).data('autocomplete-source')}, callbacks);
    $(this).autocomplete(options);
  });
}

無論您是否傳入回調,這都會正確綁定自動完成功能,但是如果您確實傳遞了回調,它們就不會被調用。

即:以下觸發了自動完成而不是回調。

$('input#name').bindAutocomplete({ select: function(){alert("working");} })

如果這就是你的意思,我想你可以做到這一點......

jQuery.fn.bindAutocomplete = function( opts ) {        
  return this.each(function(){
    opts = $.extend({
      source: $(this).data('autocomplete-source')
    }, opts);
    $(this).autocomplete( opts );
  });
}

$('input#name').bindAutocomplete({
  change: function() { ... },
  close: function() { ... }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM