jQuery 基本库确实给我们带来了很多的方便,但是因为其fn的扩展方式在项目中实在是灵活度欠缺;
而widget模式虽然具备了一定的灵活度,但是还是有一定的欠缺
下面是我对jQuery做了修改后写的一些代码
吸收了一部分prototype.js 面向对象的方式,抛弃了widget的扩展模式,抛弃了 tabs.tabs("swidth","12121") 这种调用模式,使用 obj.method(args) 的调用模式
添加了prototype.js 中 function(){}.bind(this,arg1,arg2) 的闭包模式,这样在面向对象中就解决了和jQuery 闭包调用this 的冲突
....
method1:function(){
$.getJSON(window.cp + "/profile/" + dotx.conf.userName + "?act=loadGroup&group=" + groupId,this.showGroup.bind(this));
},
showGroup:function(group){...}
....
完整的模块js 代码
profile.js
;
(function($){
$.dotx = $.dotx || {} ;
$.dotx.Profile = clazz.create();
$.extend($.dotx.Profile.prototype,{
init:function(conf){
this.groupIpt = $("#contact-group");
this.itemsDiv = $("#contact-group-items");
this.addBtn = $("#add-contact-btn");
this.bindEvent();
},
bindEvent:function(){
var t = this ;
this.groupIpt.toggleBtn({
callback:function(groupId,groupName){
t.addBtn.html("<b>添加联系人</b> (" + groupName + ")");
t.loadGroup(groupId);
}
});
},
loadGroup:function(groupId){
var t = this ;
this.itemsDiv.html("loading...");
$.getJSON(window.cp + "/profile/" + dotx.conf.userName + "?act=loadGroup&group=" + groupId,function(group){
t.showGroup(group);
});
},
showGroup:function(group){
this.itemsDiv.empty();
var items = group.items || [];
var i , len = items.length ;
if(len > 0 ){
for(i = 0; i < len ; i ++){
this.addItem(items[i]);
}
}else{
this.itemsDiv.html("分组无联系人");
}
},
addItem:function(item){
var groupId = this.getGroupId();
this.itemsDiv.append("<div id=\"contact-group-item-" + item.id + "\" style=\"height:30px;line-height:30px;border-bottom:1px dashed #ccc;\">"
+ "<span style=\"width:177px;display:inline-block;\" title=\"@" + item.userName + "\">"
+ item.contactName
+ (groupId == "all" ? "<span class=\"desc\"> (" + (item.groupName || "全部") + ")</span>" : "")
+ "</span>"
+ "<a href=\"javascript:profile.deleteContact('" + item.id + "');void(0);\" class=\"link-btn-b\">删除</a></div>");
},
showAddContactWin:function(){
var t = this ;
var txt = "<div id=\"contact-add\"></div>" ;
jQuery.prompt(txt,{
loaded:function(){
$("#contact-add").load(window.cp + "/profile/" + dotx.conf.userName + "?act=contactAdd&group=" + t.getGroupId());
},
buttons: {"关闭": false }
});
},
deleteContact : function(contactId){
if(window.confirm("确定删除该联系人么?")){
jQuery.post(window.cp + "/profile/" + dotx.conf.userName + "?act=deleteContact&contactId=" + contactId,
function(ret){
if(ret)
$("#contact-group-item-" + contactId).remove();
}
);
}
},
searchContacts:function(){
var keyword = $("#contact-search-keyword").val();
var div = $("#contact-group-search-items");
if(keyword){
div.html("Loading...");
div.load(window.cp + "/profile/" + dotx.conf.userName
+ "?act=searchContacts&keyword=" + keyword);
}
},
addContact:function(userId){
var t = this ;
var groupId = this.getGroupId();
$.post(window.cp + "/profile/" + dotx.conf.userName + "?act=addContact&user=" + userId + "&group=" + groupId,function(){
t.loadGroup(groupId);
});
},
getGroupId:function(){
return this.groupIpt.val();
}
});
})($);
base.js 基本包,需要引入
;
(function($){
/* prototype.js 中 的方法绑定模式 ---------------------------------------------------------- */
Function.prototype.bind = Function.prototype.bd = function(){
var method = this ;
var obj = arguments[0];
var args = arguments;
return function(){
var newArgs = [];
var i ,len = args.length ;
if(len > 1){
for(i = 1; i < len ; i ++){
newArgs.push(args[i]);
}
}
len = arguments.length ;
for(i = 0 ; i < len ; i ++){
newArgs.push(arguments[i]);
}
method.apply(obj,newArgs);
}
};
// 面向对象的修改
window["class"] = window.clazz = {
create:function(){
function klass(){
this.init.apply(this, arguments);
}
if (!klass.prototype.init)
klass.prototype.init = function(){} ;
klass.prototype.constructor = klass ;
return klass ;
}
};
})(jQuery);
分享到:
相关推荐
同时,确保对不同浏览器的良好兼容性也是至关重要的,因为虽然jQuery提供了很好的跨浏览器支持,但某些特定的CSS属性或DOM操作可能仍存在差异。总的来说,jQuery为动态更新表格数据提供了一个简洁、高效的解决方案。
这个“jquery做的日历小例子”是利用jQuery来创建一个实用的日历组件,可以帮助开发者快速实现网页上的日期选择功能,常见于表单验证、预约系统或者时间管理应用中。 首先,让我们深入了解jQuery如何实现日历功能的...
轻量级,“写的少,做的多” 包含以下功能: HTML元素选取 HTML元素操作 CSS操作 HTML时间函数 JavaScript特效和动画 HTML DOM遍历和修改 AJAX(异步 JavaScript 和 XML。) 2、jQuery优势 目前网络上有大量开源的 JS...
通过引入"jquery-3.4.1.js",开发者可以轻松地实现各种前端功能,如动态修改DOM、创建流畅的动画效果、实现异步通信等。结合"说明.txt"中的指导,可以更有效地利用jQuery进行Web开发。无论是新手还是经验丰富的...
本文将深入探讨“jQuery排序”和“jQuery动态修改列”这两个主题,结合给定的“ajax_commit.js”文件名,我们也将探讨jQuery如何与Ajax交互。 首先,让我们了解jQuery的排序功能。在网页开发中,对表格数据或者列表...
jbox2.3 由于更新停止,目前在jquery1.8以下使用正常。但由于jquery1.9取消了$.browser.msie方法,导致高版本jquery无法使用。本文件使用其它判断方法替换了$.browser.msie,实测在jquery1.9以上可使用。
使用jQuery修改它的内容如下: ```javascript $('#link').text('新的链接文本'); ``` 这行代码选择ID为`link`的元素,并将其文本内容替换为“新的链接文本”。 2. **修改`<span>`标签内容**: 同样,我们可以...
jQuery对象提供了许多方法,如 `.html()` 用于获取或设置元素的HTML内容,`.css()` 用于修改样式,`.click()` 用于绑定点击事件等。 ### 二、jQuery 动画效果 jQuery 提供了一系列的动画效果,如 `.fadeIn()`, `....
2. **DOM 操作**: jQuery 提供了方便的方法来创建、修改和删除 DOM 元素。例如,`$( "<div></div>" ).appendTo( "#container" )` 可以在 ID 为 "container" 的元素后面添加一个新的空 div。 3. **事件处理**: 使用 ...
【标题】:“用Jquery做的一个简单的拼图游戏” 这篇标题揭示了我们即将探讨的是一个基于JQuery开发的简易拼图游戏。JQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画设计和Ajax交互。在...
jQuery提供了方便的API,如`$(selector)`用于选择元素,`html()`或`text()`用于读取或修改元素内容,以及`append()`、`prepend()`等方法用于动态添加或删除元素,使得创建和更新游戏板变得简单。 2. **事件绑定**:...
本教程将详细探讨如何实现jQuery Treeview的拖动修改各种特效,帮助开发者提升用户体验并实现更加动态的交互效果。 一、jQuery Treeview 基础 首先,我们需要引入jQuery库以及jQuery Treeview的CSS和JS文件。确保...
在网页开发中,"JQuery alert confirm prompt 修改版"通常指的是开发者对原生JavaScript中的alert、confirm和prompt函数进行了自定义或者增强,以提供更美观、功能更丰富的对话框体验。 原生JavaScript的alert、...
Jquery经典修改增强版本,非常不错。
这样,开发者可以在不立即重构所有代码的情况下,逐步更新项目,避免了大规模的代码修改带来的风险。 **2. 使用jQuery Migrate** 要使用`jQuery Migrate`,首先需要在HTML文件中引入`jQuery`和`jQuery Migrate`的...
`jQuery`通过选择器选取DOM元素,然后对这些元素进行操作。对于滚动条的样式修改,我们主要关注`::webkit-scrollbar`和`::webkit-scrollbar-part`这两个伪元素,它们分别代表滚动条整体和滚动条的各个部分(如轨道、...
要实现这个效果,可以使用jQuery的选择器来选中图片框元素,然后通过`.css()`方法修改样式。例如,当用户鼠标悬停在图片框上时,可以编写以下代码: ```javascript $('.image-box').hover(function() { $(this)....
jQuery webcam plugin是一个兼容各浏览器的摄像头插件,资源根据官网(http://www.xarg.org/project/jquery-webcam-plugin/)下载的源码和网上的Demo做了部分修改,主要解决以下问题:1、修改官方分辨率320*240为640...
jQuery 1.9.1版本是一个重要的里程碑,它对旧的API进行了清理和重构,移除了一些不推荐使用的函数和方法,以保持库的简洁性和未来发展的兼容性。例如,`.live()`方法在这一版本中被移除,取而代之的是`.on()`和`.off...
本次提供的“jquery-3.5.1.rar”文件,包含了jQuery的核心库版本3.5.1,这是对这个经典库的一个稳定更新。在本文中,我们将深入探讨jQuery的基础知识、核心功能以及3.5.1版本的主要改进。 一、jQuery简介 jQuery是...