2012-06-14 39 views
1

我在寫一個插件,我需要「綁定」一個參數。 有時我需要this.checked的值,但有時它是$(this).val()我需要的,並且當我需要檢查其他屬性時有角落。可變屬性作爲​​jQuery插件中的參數

我需要一個「輸入參數」的初始化,它以某種方式確定要檢查的值。

我可以用eval來做到這一點,但它是邪惡的。 我可以用開關盒做到這一點,但我不確定我能爲所有事情做好準備。

這樣做的最好方法是什麼?

$.fn.formSwitch = function (options) { 

    var settings = $.extend({ 
     visibleholder: '#visible_holder', 
     hiddenholder: '#hidden_holder', 
     reparseform: this.closest('form') 
    }, options); 



    this.change(function() { 
     switchFormPart(settings.visibleholder, 
      settings.hiddenholder, 
      ********this.checked, *********** <- I would like this as a parameter 
      settings.reparseform 
     ); 
    }); 
}; 
+0

能否請您詳細闡述了。你的問題並不完全可以理解你想要的。你用eval函數做什麼? –

回答

0

您可以通過像"checked""val"作爲參數,然後一個字符串:

this.change(function() { 
    switchFormPart(settings.visibleholder, 
     settings.hiddenholder, 
     param in this ? this[param] : $(this)[param](), 
     settings.reparseform 
    ); 
}); 

如果param爲"checked",它將如果param爲"val"做相當於this.checked

,它會做相當於$(this).val()

等等。

查找到bracket notationconditional operatorin operator