jQuery动态绑定

一、原始需求

在实际项目的时候,遇到了一个问题,就是通过JS动态生成的元素,无法触发JS事件。

原始的JS代码:

$(function () {
    $(".original").click(function () {
        alert("123");
    });
})

上述类型的JS代码在处理随着页面加载而加载的DOM元素是没有问题的。但是在处理页面加载完成后,通过动态添加的方式添加上的元素是无效的,需要另外利用Jquery绑定。

动态添加元素的JS代码:

$(function () {
     $(".run").click(function () {
     var btn = "<button class=‘original‘>我是新来的的</button>";
     $(".out").append(btn);
     });
 })

此时如果点击 新添加的按钮,通过上述声明式无法处理响应事件的。

PS:至于原因是什么,这个我也不太清楚。

二、jQuery的on方法

通过查阅相关说明,发现jQuery的on()方法是支持在动态添加的元素上绑定事件的,使用见:

官网说明(英文):官方API解释

中文说明(中文):中文API解释(推荐)

详细说明请参考上述网站,这里只提出几个重点来讲解:

  1. 使用格式:jQueryObject.on( events [, selector ] [, data ], handler )---[此为可选项]

  2. 解释:events为单个或多个事件,handler为触发事件要执行的动作。
  3. 对于selector而言,如果为null或不写那么是绑定jQueryObject匹配到的元素;如果不为null,则表明绑定的是jQuyerObject的后台元素中所有符合selector要求的元素。

三、处理方法

<script type="text/javascript">
        $(function () {
            // 方法1
            $(document).on("click", ".original", function () {
                alert("HHHH");
            });
            //无效?
            $(".original").on("click", function () {
                alert("HHHH");
            });
        })
    </script>

方法1肯定有效,但是很奇怪方法2无效。。。

四、补充

思考好了再补充,留待此次。。。

时间: 2024-08-09 10:32:16

jQuery动态绑定的相关文章

javascript与jquery动态绑定事件需要先加载页面注意的坑

1.javascript的Dom对象动态事件绑定注意以下2点,如:document.getElementById("id名称").addListenerEvent("事件名称",function(){代码},false),动态绑定事件,事件名称不加on,如:click,mouseover等. (1)如果<script>绑定代码</script>写在<body>html代码</body>前面,则必须先使用加载页面语句wi

jQuery动态绑定事件(简单模拟二级联动效果)

绑定事件:$("#leyangjun").bind("change",function(){ jquery 给标签赋值:$('#leyangjun').text('好一朵美丽的茉莉花'); 清空表单值:$("#leyangjun").empty(); radio取值:$("input[name='radioName'][checked]").val(); <!DOCTYPE html PUBLIC "-//W3

Jquery 动态绑定事件 live

今天在做表单遇到这样一个问题.先看图 如图所示 下班的列表是动态添加的.这种创建input的方式.用普通的$(#input).change() 这种方式是不行的.因为这种是在加载前注册的. 现在,使用live你可以轻松搞定 代码实例: $("input[id$='jine']").live('change',function(){ //live是动态绑定 var zj=0; $("input[id$='jine']").each(function(){ zj+=$(

jquery动态绑定hover没有效果

在JQuery中,hover()函数本身是对 mouseenter && mouseleave 的封装,然而在原生event中,并没有hover这一事件,所以在传递参数hover时,并不会有任何的效果. 所以将代码换成这样 $(obj).on("mouseover mouseout",function(event){ if(event.type == "mouseover"){ //鼠标悬浮 }else if(event.type == "

jquery动态绑定事件

jQuery 动态绑定的点击事件

$(function () { var a = 1, $_div = $('#test'); $('input[name=addbtn]').on('click', function () { $_div.append('<input type="button" name="test' + a + '" value="按钮' + a + '"/>'); a++; }); //偶数项点击事件 $_div.on('click', 'inp

jquery动态绑定元素

按照正常给静态元素绑定事件的写法换成给动态元素绑定事件会不管用,要用下面的方式: 简单说就是给要绑定元素的父元素绑定事件,参数中指明要绑定该父元素下面的哪个元素就行,这样就不管你这个元素是不是新增的,都有绑定的事件,代码如下: <div class="btn-group listType"> <button id="listType" class="btn" value="" style="min-

Jquery动态绑定事件处理函数 bind / on / delegate

1.bind方法绑定的事件处理函数不会应用到后来添加到DOM中的新元素.比如你在用bind给页面元素绑定事件之后,又新添加了一些与之前绑定过事件的元素一样的DOM元素,但是这些事件并不能在新的DOM元素上有体现. 如: $(document).ready(function(){ $("img").bind({ mouseenter:function(){ $(this).css("border","thick solid red"); }, mo

jQuery 动态绑定插件livequery的用法

原文地址:https://www.cnblogs.com/xtmp/p/9116197.html