我最近阅读了一篇关于让你的代码尽可能少依赖DOM的博客文章(即尽可能多地保留$(document).ready()函数).我已经成功地做了这样的事情,比如像这样创建视图模块:
var View = function (e) {
this.element = e;
};
View.prototype = {
show: function () {
this.element.fadeIn();
},
//More manipulation functions
};
$(document).ready(function () {
var myView = new View($('#element'));
myView.show();
});
我似乎无法找到一种方法将AJAX调用包装到一个对象中,因此它们不依赖于正在加载的DOM,所以每次进行AJAX调用时我都不必写这样的东西:
$.ajax({
url: "signout.PHP",
type: "POST",
dataType: "json",
error: function (jqXHR, textStatus, errorThrown) {
alert('An error occured while trying to log out.');
},
success: function (data, textStatus, jqXHR) {
settingsWidget.getAction('#settings').triggerAction(500, function () {
WIDGETS.setonTop('#login', SideEnum.RIGHT);
});
},
complete: function (jqXHR, textStatus) {}
});
是否有一种设计模式可以用来实现我想要做的事情?另外,最好将jQuery DOM对象传递给View对象还是只传递选择器并获取View对象内的DOM对象?
解决方法:
弄脏DOM一直是个问题. Backbone.js很棒,它有助于为代码提供大量结构. Douglas Crockford的模块模式也将为您的许多代码提供封装.
http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth
一些设计模式的精彩概要
http://addyosmani.com/resources/essentialjsdesignpatterns/book/
这就是我目前用作设计模式的东西
https://github.com/bmarti44/jq-mod-pat
您使用的是由您自己决定的,但您可以使用任何这些模式进行ajax调用.希望其中一个会给你一些灵感.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。