情况:如果返回的对象(来自ajax调用)包含错误属性,我的jQuery插件允许我传递要执行的函数。在该功能中,可以设置css()
属性来突出显示失败。在代码参数isError
被用来模拟这个。调用.css()后触发事件(保存当前样式)?
问题:当插件调用连续两次且有成功的一个错误后,当然风格不变,$(this).html("Success")
显示令人毛骨悚然的红色文字。
问题:在调用.css()
后是否有任何方法来执行事件,从而保存当前样式以便稍后恢复(仅在成功时)?
<div id="container"></div>
<script>
$('#container').attach({}, true); // First call is error
$('#container').attach({}, false); // Second call is success
</script>
这是(部分)我的插件:
(function($) {
$.fn.attach = function(options, isError) {
var opt = $.extend({
onError : function(message) { // Default function for errors
this.html('Error: ' + message + '.').css('color', 'red');
}
}, options);
// Loop each selection item
this.each(function() {
if(isError) // An error occurred, call opt.onError
{
opt.onError.call($(this), "Message");
return true; // End of the current element process
}
$(this).html("Success"); // No errors, set success text
});
};
})(jQuery);
不要设置风格的JS,用JS设置一个类,并用实际的CSS设置样式。 – zzzzBov 2012-02-03 16:18:58
你可以做一个额外的jquery插件,它基本上是一个修改后的'.css()'方法,它可以做你想做的事情吗?那么你只需调用这个修改后的方法。 – maxedison 2012-02-03 16:19:51
@zzzzBov和maxedison你的解决方案似乎都很有趣...... – gremo 2012-02-03 16:23:49