3kb jQuery代碼搞定各種樹(shù)形選擇的實(shí)現(xiàn)方法
來(lái)源:易賢網(wǎng) 閱讀:839 次 日期:2016-06-20 15:04:17
溫馨提示:易賢網(wǎng)小編為您整理了“3kb jQuery代碼搞定各種樹(shù)形選擇的實(shí)現(xiàn)方法”,方便廣大網(wǎng)友查閱!

下面小編就為大家?guī)?lái)一篇3kb jQuery代碼搞定各種樹(shù)形選擇的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。

自制Jquery樹(shù)形選擇插件.

對(duì)付各種樹(shù)形選擇(省市,分類(lèi)..)90行Jquery代碼搞定,少說(shuō)廢話直接上插件代碼。稍后介紹使用說(shuō)明。是之前寫(xiě)的一個(gè)插件的精簡(jiǎn)版。

1.Jquery插件代碼

(function (j) {

  j.fn.attrs = function (option) {

    var root = this, data = [];

    //默認(rèn)參數(shù)

    var def = { url: '/ajax/GetSort/', str: root.attr("str") || '0', handel: function (v) {

      return "<option value=" + v.id + ">" + v.type + "</option>"

    }, path: root.attr("val") || 0, sChar: ',', change: function (v) { }

    };

    //參數(shù)合并

    def = j.extend({}, def, option);

    //是否初始化

    ispath() ? init() : create(def.str);

    //請(qǐng)求分類(lèi)并選中

    function create(id, o, v) {

      if (!id || parseInt(id) == -1)

        return o.nextAll().remove();

      //創(chuàng)建select

      var select = j("<select></select>").hide();

      _b(select);

      //添加到容器內(nèi)

      if (o) o.nextAll().remove();

      root.append(select);

      //發(fā)起Ajax請(qǐng)求

      j.ajax({

        type: "GET",

        url: def.url,

        data: { id: id },

        dataType: "json",

        cache: true,

        success: function (json) {

          datainit(select, json, v);

        }

      })

    }

    function datainit(select, data, v) {

      _c(select, data).val(v || -1);

      if (select.children("option").length <= 1) {

        select.remove();

        return;

      }

      else

        select.removeAttr("style");

    }

    //判斷是否符合格式

    function ispath() {

      return def.path && /^(\d{1,},)*\d{1,}$/.test(def.path) && def.path != '0,0,0';

    }

    //創(chuàng)建值

    function _v() {

      var v = new Array(), vtext = new Array();

      v.push(0);

      root.children("select").each(function () {

        if (j(this).val() > 0) {

          v.push(j(this).val());

          vtext.push(j(this).children("option[selected]").text())

        }

      })

      root.attr("val", v.join(','));

      root.attr("vtext", vtext.join(">"));

      def.change(v);

    }

    //初始化

    function init() {

      if (ispath()) {

        var list = def.path.split(def.sChar);

        for (var i in list) {

          create(list[i], null, list[++i]);

        }

        return;

      }

      alert("Error:分類(lèi)出錯(cuò)!")

    }

    //綁定事件

    function _b(select) {

      select.bind("change", function () {

        create(j(this).val(), j(this));

        _v();

      })

    }

    //創(chuàng)建下拉框

    function _c(select, data) {

      select.append(j("<option value='-1'>==請(qǐng)選擇==</option>"));

      for (var i = 0; i < data.length; i++) {

        select.append(j(def.handel(data[i])));

      }

      return select;

    }

  }

})($)

名單

名單

4.如何使用

<div id="attr"></div>

<script type="text/javascript">

(function($){

$("#attr").attr(

 {

 url: '/ajax/GetSort/',//ajax 獲取的URL 服務(wù)器返回的是Json 數(shù)據(jù)

 str: root.attr("str") || '0',//獲取初始化的分類(lèi)path.例如:23,45,90。在編輯的情況下能正確還原

 handel: function (v) {//數(shù)據(jù)處理的回調(diào)函數(shù),表明如何對(duì)后臺(tái)數(shù)據(jù)進(jìn)行解析。 如[{id:32,type:"分類(lèi)"}]

   return "<option value=" + v.id + ">" + v.type + "</option>"

  },

 path: root.attr("val") || 0,

 sChar: ',',//path 拆分的字符如果,path 為23|45|90 則 ‘|'

 change: function (v) { }//選擇框修改處理事件

  };

);

})(jQuery)

</script>

以上這篇3kb jQuery代碼搞定各種樹(shù)形選擇的實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類(lèi)型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專(zhuān)用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)