情況:如果返回的對象(來自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