Advertisement

一些遇到的问题及解决方案

阅读量:

一些遇到的问题及解决方案

  • 引言
  • 在 jQuery AJAX 操作中,无法对变量进行赋值的原因以及相应的解决方案
  • 如何将日期数据转换为指定的时间格式
  • 在 jQuery 中使用 append 方法追加节点时,由于无法直接绑定JavaScript事件而导致的问题及其解决方案如下:
    • 追加节点无法添加事件无效的问题可以通过以下方法得以解决

前言

在我们的学习与工作中,总是会遇到一些问题。如果不能及时进行总结和记录的话,则这些问题就容易被遗忘。

1、jquery ajax 中不能给变量赋值的原因及解决办法

当我们使用JQuery的Ajax从后台获取数据时,我们希望将其存储到全局变量中。然而总是无法成功地将数据注入到全局变量中。

根本原因在于我们应用的Ajax属于异步操作,在赋值时数据还未被提取出来,因此无法直接赋入。只需将操作改为同步即可。

解决办法:

把异步改成同步,如下,加上async: false,它就能赋值了

复制代码
               var user = null
               $.ajax({
                    url: "/user/findByName",
                    type: "get",
                    dataType: "json",
                    async: false,
                    data: {
                        name:name
                    },
                    success:function (data){
                        if (data.data.user!=null){
                            user = data.data.user
                        }
                    }
                })

2、将日期转换为指定的格式

为Date原型添加如下的方法

复制代码
    Date.prototype.format = function(fmt) { 
     var o = { 
        "M+" : this.getMonth()+1,                 //月份 
        "d+" : this.getDate(),                    //日 
        "h+" : this.getHours(),                   //小时 
        "m+" : this.getMinutes(),                 //分 
        "s+" : this.getSeconds(),                 //秒 
        "q+" : Math.floor((this.getMonth()+3)/3), //季度 
        "S"  : this.getMilliseconds()             //毫秒 
    }; 
    if(/(y+)/.test(fmt)) {
            fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); 
    }
     for(var k in o) {
        if(new RegExp("("+ k +")").test(fmt)){
             fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
         }
     }
    return fmt; 
    }  

添加完之后,我们可以这样调用

复制代码
    var time = new Date().format("yyyy-MM-dd hh:mm:ss");
    console.log(time1);
在这里插入图片描述

也可以这样调用

复制代码
    var time1 = new Date().format("yyyy-MM-dd");
    console.log(time1);
在这里插入图片描述

3、对于jQuery使用append追加的节点无法添加事件无效的解决方法

在某些情况下,在处理新增的元素时出现的问题可能导致它们无法正常绑定到相应的事件。具体原因是在初始化相关事件的过程中,并未包含这些新增的元素。

为了完成任务,我们应在jQuery中使用on方法来注册与某个元素相关的事件。无法直接绑定相关事件,请参考示例中的点击(click)事件。

复制代码
    <!DOCTYPE html>
    <html>
    <head>
    <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
    </script>
    <script>
    $(document).ready(function(){
      $("div").on("click","p",function(){
    $(this).slideToggle();
      });
      $("button").click(function(){
    $("<p>This is a new paragraph.</p>").insertAfter("button");
      });
    });
    </script>
    </head>
    <body>
    
    <div style="background-color:yellow">
    <p>This is a paragraph.</p>
    <p>Click any p element to make it disappear. Including this one.</p>
    <button>Insert a new p element after this button</button>
    </div>
    
    </body>
    </html>

全部评论 (0)

还没有任何评论哟~