超詳細 element select 輸入搜索 下拉加載 及 jquery 封裝搜索下拉加載更多


1.在main 同級建立一個xxx.js文件 

 

文件內信息  文件內容取自一位大佬博客 

import Vue from 'vue'

Vue.directive('loadmore', {
  bind (el, binding) {
  // 獲取element-ui定義好的scroll盒子
  const SELECTWRAP_DOM = el.querySelector('.el-select-dropdown .el-select-dropdown__wrap')
  SELECTWRAP_DOM.addEventListener('scroll', function () {
   
   const CONDITION = this.scrollHeight - this.scrollTop <= this.clientHeight
   if (CONDITION) {
    binding.value()
   }
  })
 }
})
 
 
 
2.在main.js引入該js
 
import  './xxx'
 
3.頁面內使用

 

 

4.下拉刷新

 

 

5.輸入搜索查詢

 

 

 

 6,jq封裝下拉加載 (復制就能使用

var data=['假數據1','假數據2','假數據3','假數據4','假數據5','假數據6','假數據7','假數據8','假數據9']
var data_=['假數據11','假數據12','假數據13','假數據14','假數據15','假數據16','假數據17','假數據18','假數據19']

var loadObjFun = {
  scrollInit:0,//滾動條距離頂部的高度
  loadInitFun: function (dome) {
    loadObjFun.initDomeFun(dome);//初始化容器
    loadObjFun.niceScrollFun("searchContent"); //設置滾動條
    loadObjFun.enterFun("input_text");
  },
  initDomeFun:function (dome) {//渲染頁面展示
    var domeStr = "<div class='load_module'>";
        domeStr += "<input type='text'class='input_text' placeholder='輸入3'>";
        domeStr += "<div class='searchContent'>";
        domeStr += "<ul class='list'>";
        domeStr += "</ul>";
        domeStr += "</div>";
        domeStr += "</div>";
    $("."+dome).append(domeStr);
    //給輸入框綁定事件
    loadObjFun.inputFun("input_text");
  },
  inputFun:function (dome) { //監聽input輸入參數變化 
    inputs = document.getElementsByClassName(dome)[0];
    inputs.oninput=function (){  
      if(inputs.value){
        input_val = inputs.value;
        // loadObjFun.ajaxFun(ype,data,url,success) // 請求方法
        console.log(input_val,'輸入的值')
        //模擬成功后的請求 渲染頁面
        if(input_val == 3){
          return
          $(".list").empty();
          $(".searchContent").show();
          loadObjFun.searchContetFun(data_)//渲染數據
          $(".searchContent").scrollTop(0);
          loadObjFun.resizeFun(loadObjFun.scrollDome);
        }
      }else{
        input_val = inputs.value;
        console.log(input_val,'清空');
        $(".searchContent").hide();
        $(".list").empty();
      }
    };
  },
  emptyFun:function (dome,childDome) {// 清空方法 dome 父節點 childDome 需要綁定事件的節點
    $('.'+dome).on("click",childDome,function (){  
      alert('清空');
      $(".list").empty();
      $(".searchContent").hide();
    });
  },
  enterFun:function (dome) {  // 回車搜索
    $("."+dome).bind('keyup', function(event) {
        if (event.keyCode == "13") {
          //回車執行查詢
          apply();
        }
      });
  },
  //搜索內容渲染 (改成你想要的樣式)
  searchContetFun:function (data) {  
    var str = "";
    $.each(data, function (index, item) { 
      str = "<li>"+ item +"</li>";
      $(".list").append(str);
    });
  },
  niceScrollFun: function (dome) {// 滾動到底部發送請求
    //生成滾動條兼容各大瀏覽器 
    loadObjFun.scrollDome = dome;
    $("." + dome).niceScroll("." + dome + " ul", { 
      cursorborder: "",
      cursorcolor: "LightGray",
      boxzoom: true,
      railalign: "right",
      preventmultitouchscrolling: true
    });
    // 監聽滾動條到達底部
    var nDivHight = $("." + dome).height();
    $("." + dome).scroll(function (){
      var str = "";
      var nScrollHight = $(this)[0].scrollHeight; //當前內容的高度
      loadObjFun.scrollInit =  $(this).scrollTop();
      //到達底部發送請求
      if (loadObjFun.scrollInit + nDivHight >= nScrollHight){
        // 模擬滾動到底部發送請求
        loadObjFun.searchContetFun(data)
        // loadObjFun.ajaxFun(ype,data,url,success) // 請求方法
        //自動適應高度 (得在成功的請求中調用)↑↑↑↑↑↑
        loadObjFun.resizeFun(loadObjFun.scrollDome);
      }
    });
  },
  resizeFun:function (dome) {//重置滾動條
    setTimeout(function(){
      // $("." + dome).getNiceScroll().hide(); //隱藏滾動條
      $("." + dome).getNiceScroll().resize();
    }, 500);
  },
  ajaxFun:function(type,data,url,success){//type 請求類型 data 攜帶參數 url 請求地址 success 回調方法
    var xhr = new XMLHttpRequest();
    if(type == "get"){
      if(data){
        url+='?';
        for (var key in data) {
          if (data.hasOwnProperty(key)) {
            url+=data[key]+"&";
          };
        };
        url = url.substring(0,url.length-1);
      };
      xhr.open(type,url);
      xhr.send();
    }else if(type == "post"){
      xhr.open(type,url);
      xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
      if(data) {
        xhr.send(data);
      }else{
        xhr.send();
      };
    };
    xhr.onreadystatechange=function(){
      if(xhr.readyState==4 && xhr.status==200){
        success(xhr);
      };
    };
  }
};
function apply() {  
  $(".list").empty();
  $(".searchContent").show();
  loadObjFun.searchContetFun(data_)//渲染數據
  $(".searchContent").scrollTop(0);
  loadObjFun.resizeFun(loadObjFun.scrollDome);
}
// 傳入容器節點
loadObjFun.loadInitFun("load");
 
7、頁面使用及需要引入的需要引入的文件

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM