我創建了一個插件,根據隱藏字段創建一個基於隱藏字段的複選框圖像。我想重寫is()
函數...這可能嗎?我基本上使用圖像來模擬複選框。如何覆蓋我的插件的jQuery全局函數?
HTML:
<input type="hidden" value="1" id="box" />
創建隱藏字段插件:
$('#box').myCheckbox();
我想能夠做到以下幾點:
$('#box').is(':checked');
是否有可能覆蓋我的插件中的is()
函數?
我創建了一個插件,根據隱藏字段創建一個基於隱藏字段的複選框圖像。我想重寫is()
函數...這可能嗎?我基本上使用圖像來模擬複選框。如何覆蓋我的插件的jQuery全局函數?
HTML:
<input type="hidden" value="1" id="box" />
創建隱藏字段插件:
$('#box').myCheckbox();
我想能夠做到以下幾點:
$('#box').is(':checked');
是否有可能覆蓋我的插件中的is()
函數?
沒錯:)
(function() {
var proxied = jQuery.fn.is;
jQuery.fn.is= function() {
//do your things here
return proxied.apply(this, arguments);//call the default is here
};
})();
順便說一句:checked
已經默認支持
所以如果u有
$( '#複選框')是( ':檢查');//返回true/false取決於如果勾選複選框不要過於複雜的事情,因爲你會拉你的頭髮出來後,當你忘了你做了這壓倒一切的變化:)
爲什麼你不能使用.attr('checked')
?
因爲我模擬一個「真正的」複選框(jQuery明智)。但我實際上在使用圖像。 – 2011-02-18 10:42:51
您可以擴展jQuery的選擇器並添加新的選擇器。
http://james.padolsey.com/javascript/extending-jquerys-selector-capabilities/
例如:
$.extend($.expr[':'],{
inline: function(a) {
return $(a).css('display') === 'inline';
}
});
這允許你做:
$(':inline'); // Selects ALL inline elements
$('a:inline'); // Selects ALL inline anchors
編輯:
在你的情況下,模仿的複選框,首先抓住從jQuery的代碼:檢查...這就是:
return elem.checked === true;
然後
$.extend($.expr[':'],{
checked: function(a) {
if(a.isMySpecialCheckbox()) return a.hasAPropertyThatSignifiesChecked;
else return elem.checked === true;
}
});
嘗試,我還沒有嘗試過,但它應該工作。
我沒有完成我的問題。我沒有提到我使用圖像嘲笑複選框。 – 2011-02-18 10:46:30
工程就像一個魅力! `var proxied = jQuery.fn.is; $ .fn.is = function(){ \t var t = $(this); (t.data('myCheckbox')!==未定義){ \t \t if(arguments。length === 1 && arguments [0] ===':checked'){ \t \t \t return t.data('myCheckbox')。getState()=== 1; \t \t} \t} \t return proxied.apply(this,arguments); };` – 2011-02-18 11:11:41