zoukankan      html  css  js  c++  java
  • Jquery中常见问题

    最近也是在做项目的时候刚接触到jQuery。下面汇总一下遇到的几个问题

    • 如何动态创建按钮

       方式一: $("#a").html("<input type='button' value='按钮'  class='button‘/>");

       方式二: $("#a").append("<input type='button' value='按钮' class='button‘/>");

    <input  type="button" id="add_html" value="使用html方法增加"/>
    <input  type="button" id="add_append" value="使用append方法增加"/>
    
    
    <div id="a">
        <p>添加一个按钮的地方:</p>
    </div>
    
    <script src="~/Scripts/jquery-1.7.1.js" type="text/javascript"></script>
    
    <script type="text/javascript">
        $(function () {
            $("#add_html").click(function () {
                $("#a").html("<input type='button' value='按钮' class='button'/>");
            })
    
            $("#add_append").click(function(){
                $("#a").append("<input type='button' value='按钮' class='button'/>");
            })        
        })
    </script>

    两种做法得到的效果是:

          html只会在标签处生成相应的按钮,即不管点几下,都只生成一个按钮

          append是在标签的最后添加,点一次,就会出现一个按钮

          还有一种方法是

    1 $("#add").click(function () {
    2             $("<input type='button' value='新按钮' class='button'/>").insertAfter("#a");
    3             $("<input type='button' value='新按钮' class='button'/>").insertBefore("#a");
    4         })
    • 如何对动态添加的按钮绑定事件

        上面所讲的生成的按钮就是动态按钮(由脚本创建的新元素),我们通常使用的click事件

         $('.button').click(function(){});

        只能绑定到页面中当前存在的对象,而对于动态生成的对象不能绑定

        这里就用到两种方法 :    on()方法或者deletege()方法

    @{
        ViewBag.Title = "Index";
    }
    
    <h2>Index</h2>
    
    
    <input  type="button" id="add_append" value="使用append方法增加"/>
    
    <div id="abc"> 
        <input type="button" class="button" value="按钮"/>
        <div id="a">
            <p>添加一个按钮的地方:</p>
        </div>
    </div>
    
    <script src="~/Scripts/jquery-1.7.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            $("#add_append").click(function () {
                $("#a").append("<input type='button' value='新按钮' class='button'/>");
            })
    
            //以下两种方法都可以实现
            //添加元素必须是某一个元素的子元素
    
            //$("#abc").on("click", ".button", function () {
            //    alert("1");
            //})
    
            $("#abc").delegate(".button", "click", function () {
                alert("1");
            })
        })
    </script>
    • 元素的定位

    •  children()只能向下遍历一级(子元素); find()可以找出所有后代元素
    •  $("tr td") tr的所有后代元素td;  $("tr>td") tr的子元素td
    •  parent 父元素; cloest 最近的祖先元素
    •  按层次查找元素 $("#a b c d") 每一层次所在的元素个数必须是一个(each方法的最后一个除外)
    • 方法定义相关

        1. 定义数组

         var aArray={}

         使用的时候  aArray[i]

     var aArray = {};
        var i = 0;
        $.each($("#"+TableId+" > tbody >tr"), function (index, item) {
            if ($(this).children("td").first().find("input").attr("checked") == 'checked') {         
                aArray[i] = $(this).children("td").last().find("input").val();            
                i++;
            }
        });
    View Code

        2.this参数      

        以$(this)作为参数(实参),以$this作为形参

        使用的时候 $this = $this

     1 function Com($this, keyValue) {
     2     var aArray = {};
     3     var i = 0;
     4     var $this = $this;
     5     $.each($this.parent("div").prev("table").children("tbody").children("tr"), function (index, item) {
     6         if ($(this).children("td").first().find("input").attr("checked") == 'checked') {         
     7             aArray[i] = $(this).children("td").last().find("input").val();            
     8             i++;
     9         }
    10     })
    11 })
    12 
    13 
    14  $("#emission").delegate(".add", "click", function () { 
    15             Com($(this), "inKey");
    16         })
    View Code
    • 常用方法

    • ajax方法 

      

      定义和用法

      ajax() 方法通过 HTTP 请求加载远程数据。

      该方法是 jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。

      最简单的情况下,$.ajax() 可以不带任何参数直接使用。

      注意:所有的选项都可以通过 $.ajaxSetup() 函数来全局设置。

            $.each($(".EnumClass"), function (index, item) {
                    var enumvalue = $(this).prev("select").val();
                    var typename = $(this).attr("id").toString(); 
                    var enumIndex;
                    $.ajax({
                        type: 'POST',
                        url: '/Enum/StringToInt',
                        async:false,
                        data: { typeName: typename, enumValue: enumvalue },
                        success: function (result) {                       
                             enumIndex = result;
                        }
                    })
                    $(this).val(enumIndex);
           })

    注意两个问题:

          1.async属性很重要,表示是否是异步调用此方法。如果true表示异步,表示两个方法可以同时执行。引起的问题可能是方法二可能会用到方法一执行完的结果,这些就不能设置异步运行
          2.在success方法里是不能使用jquery选择器的。

    • 常用的控件

         My97datepicker 非常好用的日期控件

  • 相关阅读:
    mysql BETWEEN操作符 语法
    mysql IN操作符 语法
    mysql LIKE通配符 语法
    mysql TOP语句 语法
    mysql DELETE语句 语法
    mysql Update语句 语法
    mysql INSERT语句 语法
    mysql ORDER BY语句 语法
    mysql OR运算符 语法
    mysql AND运算符 语法
  • 原文地址:https://www.cnblogs.com/tech-bird/p/3515130.html
Copyright © 2011-2022 走看看