欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Jquery 好友選擇器V2.0

 更新時(shí)間:2009年05月31日 00:46:30   作者:  
之前發(fā)布過一片文章:自己動(dòng)手做jquery 好友輸入提示插件 ,現(xiàn)在這次發(fā)布的是增強(qiáng)版,在功能和用戶體驗(yàn)等方面多做了改善和拓展。
個(gè)人覺得好友選擇器是一個(gè)比較復(fù)雜的組件,涉及到前端和后端的整合。在這里我主要是介紹端段如何實(shí)現(xiàn),后端的數(shù)據(jù),我用了幾個(gè)簡單的ASP頁面來提供。

1.代碼風(fēng)格

        我的組件是作為一個(gè)Jquery 的插件來做的。把整個(gè)組件做為一個(gè)類來處理。這樣也方便在一個(gè)頁面上多個(gè)好友選擇器共存而不相互影響。

        所有需要寫的參數(shù)都在最下面的giant.ui.friendsuggest.defaults 中給了默認(rèn)值。在未傳入?yún)?shù)時(shí),會(huì)調(diào)用默認(rèn)值。另外,在以下劃線開頭的方法,我約定為私有方法,理論上不允許外部調(diào)用它們。

2.Dom結(jié)構(gòu)

      我的DOM結(jié)構(gòu)沒有在JS里面構(gòu)造出來,而是預(yù)先下載xhtml頁面里面。主要考慮當(dāng)JS不可用時(shí),至少能保證基本的搜索功能。這也符合“漸進(jìn)增強(qiáng)”的思想。

<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">
       數(shù)據(jù)加載中....
    </div>
    <div class="ui-fs-all">
        <div class="top">
            <select id="ui-fs-friendtype"><option value="-1">所有好友</option></select>
            <div class="close" title="關(guān)閉">關(guān)閉</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">
                數(shù)據(jù)加載中...
            </div>
        </div>
    </div>
</div>       

3.數(shù)據(jù)格式

請(qǐng)求了3種不同的數(shù)據(jù),首先是好友類別數(shù)據(jù),在剛初始化組件的時(shí)候去獲取,JSON 格式,格式為

[{name:'以前的同事',id:'1'},{name:'現(xiàn)在的同事',id:'2'}]

然后是對(duì)應(yīng)好友類別的好友總數(shù),用來在點(diǎn)擊彈出所有好友時(shí)做分頁使用。數(shù)據(jù)格式為Int型,直接輸出一個(gè)數(shù)字就行了。獲取數(shù)據(jù)時(shí)使用的參數(shù)為typeId,即好友類別的ID,為-1時(shí)獲取所有好友的總數(shù)。

最后是好友列表數(shù)據(jù),也是JSON格式。格式為:

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

數(shù)據(jù)的獲取分兩種情況。

一種是輸入框中輸入字符時(shí)獲取的數(shù)據(jù),用name參數(shù)來存放輸入框中輸入的內(nèi)容。

第二種是點(diǎn)擊右側(cè)按鈕出現(xiàn)的所有好友的情況,由于涉及到分頁、下拉列表框的過濾等,所以參數(shù)比較多,有三個(gè)參數(shù):typeId、p、pageSize       typeId代表當(dāng)前的類別,p代表當(dāng)前的頁碼,pageSize 代表每頁顯示的人數(shù)。

4 功能簡介

組件支持多選和單選兩種模式,在初始化組件時(shí)通過傳入?yún)?shù)來控制。默認(rèn)是多選。在單選模式下可以傳入一個(gè)回調(diào)函數(shù),即當(dāng)選中某一好友時(shí)觸發(fā)。

整個(gè)組件最核心的部分是對(duì)事件的監(jiān)聽和對(duì)數(shù)據(jù)的異步獲取,組件涉及到了focus、blur、click、keyup,change 五個(gè)事件。我在代碼里面是把這五類事件分開放在不同的私有方法里面去綁定的。分別是: _clickBind();_focusBind();_blurBind(); _keyUpBind();  _selectChangeBind();

其中對(duì)input進(jìn)行鍵盤事件的監(jiān)聽是最復(fù)雜的,要考慮到多種情況。通常沒輸入一個(gè)鍵都要去后臺(tái)請(qǐng)求一次數(shù)據(jù),但需要對(duì)上下左右方向鍵和回車鍵做不同的處理,大家可以直接看源代碼來了解。

另外一個(gè)比較重要的處理就是重復(fù)選擇的好友會(huì)通過閃動(dòng)顏色來提示。這里主要是通過setInterval()來實(shí)現(xiàn)

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()方法來獲取,返回一個(gè)存放好友id的數(shù)組。

5.默認(rèn)參數(shù): 

        前面大部分參數(shù)主要是對(duì)DOM中對(duì)應(yīng)的按鈕和容器進(jìn)行指定 ,在大家不改變DOM結(jié)構(gòu)的前提下是不需要改動(dòng)這些參數(shù)的。

     /**
     * 默認(rèn)參數(shù)
     * <pre>
     * totalSelectNum 多選模式下,最多選取人數(shù),默認(rèn)為30
     * selectType 選擇模式,默認(rèn)為多選"multiple",若為單選,則用single
     * selectCallBack 單選模式下,選中之后的回調(diào)函數(shù)。
     * </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.調(diào)用方式:

在DOM結(jié)構(gòu)沒變的情況下,調(diào)用非常簡單。
var test = new giant.ui.friendsuggest();
當(dāng)然,應(yīng)該放在$(document).ready(function(){})里面,否則找不到對(duì)應(yīng)的DOM。
如果需要修改參數(shù),就查看上面的默認(rèn)的參數(shù),哪個(gè)需要改,就傳入哪個(gè)。


[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]

打包下載

相關(guān)文章

  • jQuery+CSS 實(shí)現(xiàn)的超Sexy下拉菜單

    jQuery+CSS 實(shí)現(xiàn)的超Sexy下拉菜單

    早前發(fā)現(xiàn)了 Soh Tanaka 分享的非常 Sexy 的 Drop Down Menu w/ jQuery & CSS,稍作修改實(shí)現(xiàn)了多級(jí)下拉,并實(shí)現(xiàn)了 ASP.NET 中通過輸出 HTML 動(dòng)態(tài)創(chuàng)建版本,有興趣的童鞋可以包裝成 Server Control。
    2010-01-01
  • jQuery實(shí)現(xiàn)的簡單懸浮層功能完整實(shí)例

    jQuery實(shí)現(xiàn)的簡單懸浮層功能完整實(shí)例

    這篇文章主要介紹了jQuery實(shí)現(xiàn)的簡單懸浮層功能,結(jié)合完整實(shí)例形式分析了jQuery基于時(shí)間函數(shù)動(dòng)態(tài)修改css樣式實(shí)現(xiàn)窗口浮動(dòng)效果的相關(guān)技巧,需要的朋友可以參考下
    2017-01-01
  • jquery 指南/入門基礎(chǔ)

    jquery 指南/入門基礎(chǔ)

    jquery 指南/入門基礎(chǔ)...
    2007-11-11
  • jQuery.event兼容各瀏覽器的event詳細(xì)解析

    jQuery.event兼容各瀏覽器的event詳細(xì)解析

    jQuery在遵循W3C規(guī)范的情況下,對(duì)事件的常用屬性進(jìn)行了封裝,使得事件處理在各大瀏覽器下都可以正常的運(yùn)行而不需要進(jìn)行瀏覽器類型判斷
    2013-12-12
  • jQuery中$(function() {});問題詳解

    jQuery中$(function() {});問題詳解

    $(function() {});是$(document).ready(function(){ })的簡寫,最早接觸的時(shí)候也說$(document).ready(function(){ })這個(gè)函數(shù)是用來取代頁面中的window.onload;但是今天發(fā)現(xiàn) 好像不是這樣回事!是在做一個(gè)頁面載入效果時(shí)發(fā)現(xiàn)的!
    2015-08-08
  • 基于jQuery的可以控制左右滾動(dòng)及自動(dòng)滾動(dòng)效果的代碼

    基于jQuery的可以控制左右滾動(dòng)及自動(dòng)滾動(dòng)效果的代碼

    迷上jQuery,相對(duì)于原生JavaScript,它是如此的美妙.也因此,促使我更加的努力的研習(xí)原生JavaScript.
    2010-07-07
  • 簡潔Ajax函數(shù)處理(示例代碼)

    簡潔Ajax函數(shù)處理(示例代碼)

    Ajax是前后端交互經(jīng)常用的,雖然jQuery瘋狂ajax處理函數(shù) $.post(), $.get(); $.ajax()已經(jīng)大大的簡化了ajax的函數(shù)處理,但我們可以更加精益求精
    2013-11-11
  • jQuery滾動(dòng)條美化插件nicescroll簡單用法示例

    jQuery滾動(dòng)條美化插件nicescroll簡單用法示例

    這篇文章主要介紹了jQuery滾動(dòng)條美化插件nicescroll簡單用法,結(jié)合實(shí)例形式簡單分析了jQuery滾動(dòng)條美化插件jquery.nicescroll.js的引入與使用技巧,非常簡單實(shí)用,需要的朋友可以參考下
    2018-04-04
  • 詳解ajax的data參數(shù)錯(cuò)誤導(dǎo)致頁面崩潰

    詳解ajax的data參數(shù)錯(cuò)誤導(dǎo)致頁面崩潰

    本篇文章給大家詳細(xì)分析了ajax的data參數(shù)錯(cuò)誤導(dǎo)致頁面崩潰的原因以及解決辦法,有需要的朋友參考學(xué)習(xí)下。
    2018-04-04
  • 基于Jquery的文字自動(dòng)截?。ㄌ峁┰创a)

    基于Jquery的文字自動(dòng)截?。ㄌ峁┰创a)

    計(jì)劃總是趕不上變化,這篇插件開發(fā)的文章本應(yīng)在上周完成,由于手頭的項(xiàng)目實(shí)在緊張,只好讓路吧,嘿嘿。今天將跟大家一起完成這個(gè)插件的開發(fā)流程。
    2011-08-08

最新評(píng)論