【发布时间】:2023-03-05 00:09:02
【问题描述】:
情况:如果返回的对象(来自 ajax 调用)包含错误属性,我的 jQuery 插件允许我传递要执行的函数。在该函数中,可以设置css() 属性以突出显示失败。代码中的参数isError是用来模拟这个的。
问题:当插件被调用连续两次并且有出错后成功时,样式当然没有变化$(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设置a类,用实际CSS设置样式。
-
你能做一个额外的jquery插件吗?它本质上是一个修改过的
.css()方法,可以做你想做的事吗?那么你只需调用这个修改后的方法。 -
@zzzzBov 和 maxedison 您的解决方案似乎都很有趣...
-
不需要额外的插件,只需在当前插件中包装和替换
css。应该很简单。但是可能有更好的方法来处理整个情况。 -
@FelixKling 你能更具体一点吗? .css 函数应该放在哪里?
标签: jquery css jquery-plugins callback