zoukankan      html  css  js  c++  java
  • jquery优化02

    缓存变量:DOM遍历是昂贵的,所以尽量将会重用的元素缓存。

    $element = $('#element');
    h = $element.height();   //缓存
    $element.css('height',h-20);
    

    如果你打算对DOM元素做大量操作(连续设置多个属性或css样式),建议首先分离元素然后在添加。

    使用var与匈牙利命名法,且避免全局变量 ;  

    优化选择符;避免多个ID选择符

    ajax:

    • 使用相关函数:
      $("#file").on("click","button",function() {
         $.ajax("confirmation.html",{
      	 data: {"confNum":1234},
      	 success: function(res) {},
      	 error: function(req,errorType,errorMessage) {},
      	 timeout:3000,
      	 beforeSend: function() {
      	     $(".confirmation").addClass('is-loading');
      	 },
      	 complete: function() {
      	     $(".confirmation").removeClass("is-loading");
      	 }
          })
      });
    • 提交表单:
      $("form").on("submit",function(event) {
           event.preventDefault(); //submit will reflash the page
           var form = $(this);
           $.ajax("/book", {
           	type: "POST",
           	data: form.serialize(), //use this;
           	success: function(result) {
           	   form.remove();
           	   $("#vacation").hide().html(result).fadeIn();  
           	}
           });
         });
    • 优化操作:
      $.ajax('/test.html')
          .done(function(res) {console.log(res,'done1');})
          .fail(function(res) {console.log(res,'fail');})
    • 要多个ajax共同使用的时候
      $.when($.ajax("test1.html"),$.ajax("test2.html"))
          .done(function(res) {console.log(res,'done');})
          .fail(function(res) {console.log(res,'fail');});
      
      //都成功才会执行done;返回第一个ajax的res;

    写插件:

    • html:
      <div class="container">
      	<div class="col-sm-12 top">
      		<button id="all" class="btn btn-primary col-sm-offset-10 show-price">show all</button>
      	</div>
      	<div class="jumbotron col-sm-3 vacation" data-price="110">
      		<h4>Hawaiian Vaction</h4>
      		<button class="click btn btn-info">SHOE PRICE</button>
      		<p class="no-hide"><a href="#" class="remove-vacation">no thanks!</a></p>
      	</div>
      
      	<div class="jumbotron col-sm-3 col-sm-offset-1 vacation" data-price="150">
      		<h4>European Getaway</h4>
      		<button class="click btn btn-info">SHOE PRICE</button>
      		<p class="no-hide"><a href="#" class="remove-vacation">no thanks!</a></p>
      	</div>
      
      	<div class="jumbotron col-sm-3 col-sm-offset-1 vacation" data-price="90">
      		<h4>Visit Japan</h4>
      		<button class="click btn btn-info">SHOE PRICE</button>
      		<p class="no-hide"><a href="#" class="remove-vacation">no thanks!</a></p>
      	</div>
      </div>	
    • js:
      $.fn.pricefy = function(options) {
            	this.each(function() {
                //使用$.extend添加属性;setting为要操作的数据集合
            		var settings = $.extend({
            			days: 3,
            			vacation: $(this),
            			price: $(this).data("price")
            		},options);
            		var show = function() {
            			var details = $("<p>Book" + settings.days +"days for $" + (settings.days * settings.price)+  "</p>");
            			settings.vacation.find(".click").hide();
            			settings.vacation.append(details);
            		};
            		var remove = function() {
            			settings.vacation.hide().off(".pricefy");
            		};
            		settings.vacation.on("click.pricefy","button",show);
            		settings.vacation.on("show.pricefy",show);
            		settings.vacation.on("click.pricefy",".remove-vacation",remove);
            	})
            };
      
            $(function() {
            	$(".vacation").pricefy();
            	$(".show-price").on("click",function(event) {
            		event.preventDefault();
            		$(".vacation").trigger('show.pricefy');
            	});
            });
      

        

        

      

  • 相关阅读:
    vue项目根据不同环境动态配置接口
    微信内置浏览器手机按返回键,给出提示,是否要退出
    Mac更新系统后提示xcrun error
    curl请求本地域名问题
    PHP把PNG图片转化为JPG时透明背景变黑色
    安卓微信浏览器中window.location.href失效的问题
    上拉加载触底事件最简单写法
    记一次virtualbox和夜神模拟器冲突的问题
    技术总结
    input type file onchange上传文件的过程中,同一个文件二次上传无效的问题。
  • 原文地址:https://www.cnblogs.com/jinkspeng/p/4134789.html
Copyright © 2011-2022 走看看