我创建了一个基于隐藏字段创建复选框图像的插件。我想覆盖is()
函数......可能吗?我基本上使用图像来模拟复选框。
HTML:
<input type="hidden" value="1" id="box" />
为隐藏字段创建插件:
$('#box').myCheckbox();
我希望能够做到以下几点:
$('#box').is(':checked');
是否可以覆盖插件中的is()
功能?
答案 0 :(得分:3)
您可以扩展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中获取代码:checked ...这是:
return elem.checked === true;
然后
$.extend($.expr[':'],{
checked: function(a) {
if(a.isMySpecialCheckbox()) return a.hasAPropertyThatSignifiesChecked;
else return elem.checked === true;
}
});
尝试一下,我没试过,但它应该有用。
答案 1 :(得分:2)
是的:)
(function() {
var proxied = jQuery.fn.is;
jQuery.fn.is= function() {
//do your things here
return proxied.apply(this, arguments);//call the default is here
};
})();
btw :checked
默认情况下已受支持
所以,如果你有
$('#checkbox')。is(':checked'); //返回true / false,具体取决于是否选中了复选框,不要使事情变得复杂,因为你将在以后拉出你的头发忘了你做了这个压倒一切的变化:)
答案 2 :(得分:1)
为什么不能使用.attr('checked')
?