• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >jquery > 基于Jquery 好友选择器V2.0

基于Jquery 好友选择器V2.0

作者: 字体:[增加 减小] 来源:互联网 时间:2017-08-16

通过本文主要向大家介绍了Jquery,好友选择器等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
个人觉得好友选择器是一个比较复杂的组件,涉及到前端和后端的整合。在这里我主要是介绍端段如何实现,后端的数据,我用了几个简单的ASP页面来提供。

1.代码风格

        我的组件是作为一个Jquery 的插件来做的。把整个组件做为一个类来处理。这样也方便在一个页面上多个好友选择器共存而不相互影响。

        所有需要写的参数都在最下面的giant.ui.friendsuggest.defaults 中给了默认值。在未传入参数时,会调用默认值。另外,在以下划线开头的方法,我约定为私有方法,理论上不允许外部调用它们。

2.Dom结构

      我的DOM结构没有在JS里面构造出来,而是预先下载xhtml页面里面。主要考虑当JS不可用时,至少能保证基本的搜索功能。这也符合“渐进增强”的思想。

<div id="ui-fs" class="ui-fs">
    <div class="ui-fs-result clearfix">
    </div>
    <div class="ui-fs-input">
        <input type="text" value="输入好友姓名(支持全拼输入)" maxlength="30" />
        <a class="ui-fs-icon" href="javascript:void(0)" title="查看所有好友">查看所有好友</a>
    </div>
    <div class="ui-fs-list">
       数据加载中....
    </div>
    <div class="ui-fs-all">
        <div class="top">
            <select id="ui-fs-friendtype"><option value="-1">所有好友</option></select>
            <div class="close" title="关闭">关闭</div>
        </div>
        <div class="ui-fs-allinner">
            <div class="page clearfix">
                <div class="llight1">还有<b>30</b>人可选</div><div class="button"><span class="prev">上一页</span><span class="next">下一页</span></div>
            </div>
            <div class="list clearfix">
                数据加载中...
            </div>
        </div>
    </div>
</div>       

3.数据格式

请求了3种不同的数据,首先是好友类别数据,在刚初始化组件的时候去获取,JSON 格式,格式为

[{name:'以前的同事',id:'1'},{name:'现在的同事',id:'2'}]

然后是对应好友类别的好友总数,用来在点击弹出所有好友时做分页使用。数据格式为Int型,直接输出一个数字就行了。获取数据时使用的参数为typeId,即好友类别的ID,为-1时获取所有好友的总数。

最后是好友列表数据,也是JSON格式。格式为:

[{fUid:1,friendUserName:'karry',friendHeadPic:'images/1.jpg'},{fUid:2,friendUserName:'kaliy',friendHeadPic:'images/2.jpg'}]

数据的获取分两种情况。

一种是输入框中输入字符时获取的数据,用name参数来存放输入框中输入的内容。

第二种是点击右侧按钮出现的所有好友的情况,由于涉及到分页、下拉列表框的过滤等,所以参数比较多,有三个参数:typeId、p、pageSize       typeId代表当前的类别,p代表当前的页码,pageSize 代表每页显示的人数。

4 功能简介

组件支持多选和单选两种模式,在初始化组件时通过传入参数来控制。默认是多选。在单选模式下可以传入一个回调函数,即当选中某一好友时触发。

整个组件最核心的部分是对事件的监听和对数据的异步获取,组件涉及到了focus、blur、click、keyup,change 五个事件。我在代码里面是把这五类事件分开放在不同的私有方法里面去绑定的。分别是: _clickBind();_focusBind();_blurBind(); _keyUpBind();  _selectChangeBind();

其中对input进行键盘事件的监听是最复杂的,要考虑到多种情况。通常没输入一个键都要去后台请求一次数据,但需要对上下左右方向键和回车键做不同的处理,大家可以直接看源代码来了解。

另外一个比较重要的处理就是重复选择的好友会通过闪动颜色来提示。这里主要是通过setInterval()来实现

var i = 0;
var $obj = $($this.opts.resultContainer).find("[name='" + fUid + "']");
$obj.css("background-color", "#fff");
//变色
var interval = setInterval(function() {
    //IE和FF颜色输出不一样
    if ($obj.css("background-color") == "#ffffff" || $obj.css("background-color") == "rgb(255, 255, 255)") {
        $obj.css("background-color", "#6699cc");
        $obj.css("color", "#fff");
    } else {
        $obj.css("background-color", "#ffffff");
        $obj.css("color", "#666666");
    }
    i++;
    if (i == 4) {
        $obj.attr("style", "");
        clearInterval(interval);
    }
}, 300);
 

多选模式下选中的好友可以通过 getResult()方法来获取,返回一个存放好友id的数组。

5.默认参数: 

        前面大部分参数主要是对DOM中对应的按钮和容器进行指定 ,在大家不改变DOM结构的前提下是不需要改动这些参数的。

     /**
     * 默认参数
     * <pre>
     * totalSelectNum 多选模式下,最多选取人数,默认为30
     * selectType 选择模式,默认为多选"multiple",若为单选,则用single
     * selectCallBack 单选模式下,选中之后的回调函数。
     * </pre>
     * */
    giant.ui.friendsuggest.defaults = {
        btnAll:"#ui-fs .ui-fs-icon",
        btnCloseAllFriend:"#ui-fs .ui-fs-all .close",
        btnNextPage:"#ui-fs .ui-fs-all .next",
        btnPrevPage:"#ui-fs .ui-fs-all .prev",
        selectFriendType:"#ui-fs-friendtype",
        allFriendContainer:"#ui-fs .ui-fs-all" ,
        allFriendListContainer:"#ui-fs .ui-fs-all .ui-fs-allinner div.list",
        frinedNumberContainer:"#ui-fs .ui-fs-allinner .page b",
        resultContainer:"#ui-fs .ui-fs-result",
        input:"#ui-fs .ui-fs-input input",
        inputContainer:"#ui-fs .ui-fs-input",
        dropDownListContainer:"#ui-fs .ui-fs-list",
        inputDefaultTip:"输入好友姓名(支持全拼输入)",
        noDataTip:"您的好友列表中不存在该好友",
        ajaxUrl:"ajax.asp",
        ajaxLoadAllUrl:"ajax.asp",
        ajaxGetCountUrl:"ajaxcount.asp",
        ajaxGetFriendTypeUrl:"ajaxFriendType.asp",
        totalSelectNum:30,
        ajaxBefore:null,
        ajaxError:null,
        selectType:"multiple",
        selectCallBack:null
    };

6.调用方式:

在DOM结构没变的情况下,调用非常简单。
var test = new giant.ui.friendsuggest();
当然,应该放在$(document).ready(function(){})里面,否则找不到对应的DOM。
如果需要修改参数,就查看上面的默认的参数,哪个需要改,就传入哪个。
好友选择
多选模式: 查看所有好友 数据加载中.... 数据加载中...


单选模式 查看所有好友 数据加载中.... 数据加载中...








©playgoogle.com
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
打包下载

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 基于jQuery对象和DOM对象和字符串之间的转化实例
  • jquery+css实现简单的图片轮播效果
  • 使用jQuery实现鼠标点击左右按钮滑动切换
  • jQuery实现上传图片前预览效果功能
  • jQuery初级教程之网站品牌列表效果
  • 基于jquery实现多选下拉列表
  • jQuery接受后台传递的List的实例详解
  • 详解jquery选择器的原理
  • jQuery上传插件webupload使用方法
  • 关于jquery form表单序列化的注意事项详解

相关文章

  • 2017-08-16jQuery实现搜索页面关键字的功能
  • 2017-08-16Jquery实现鼠标移动放大图片功能实例
  • 2017-08-16jQuery实现html table行Tr的复制、删除、计算功能
  • 2017-08-16基于jquery的滚动新闻列表
  • 2017-08-16webpack中引用jquery的简单实现
  • 2017-08-16jquery操作select取值赋值与设置选中实例
  • 2017-08-16jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
  • 2017-08-16浅谈jquery点击label触发2次的问题
  • 2017-08-16超级简单的jquery操作表格方法
  • 2017-08-16Jquery 高亮显示文本中重要的关键字

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 使用简洁的jQuery方法实现隔行换色功能
    • 使用jQuery和Bootstrap实现多层、自适应模态窗口
    • 24款非常有用的 jQuery 插件分享
    • jQuery Tools Dateinput使用介绍
    • jQuery filter函数使用方法
    • Jquery+CSS 创建流动导航菜单 Fluid Navigation
    • jquery offset函数应用实例
    • jQuery结合AJAX之在页面滚动时从服务器加载数据
    • jQuery中[attribute^=value]选择器用法实例
    • jquery中ajax学习笔记一

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有