使用 jQuery 的水印插件,我正在尝试 jslint 并最小化函数,但我遇到了我以前从未见过的语法,其中存在真正应该有赋值或函数调用的表达式:
(function($) {
$.fn.watermark = function(css, text) {
return this.each(function() {
var i = $(this), w;
i.focus(function() {
w && !(w=0) && i.removeClass(css).data('w',0).val('');
})
.blur(function() {
!i.val() && (w=1) && i.addClass(css).data('w',1).val(text);
})
.closest('form').submit(function() {
w && i.val('');
});
i.blur();
});
};
$.fn.removeWatermark = function() {
return this.each(function() {
$(this).data('w') && $(this).val('');
});
};
})(jQuery);
我对以下几行特别感兴趣:
w && !(w=0) && i.removeClass(css).data('w',0).val('');
和
!i.val() && (w=1) && i.addClass(css).data('w',1).val(text);
有人可以解释这个速记并重写这些函数,以便我可以比较它们以更好地理解速记吗?
谢谢你。