jQ live用法

我们给元素绑定单击事件。用得最多的都是$("#id").click(function(){});

但我们动态添加的元素。这样绑定是不行的。必须借助live  $("#id").live("click",function(){})

这是一个鼠标移入和移除事件。

$("#tabs li").hover(function () {
                $(this).addClass("ui-state-hover");
            }, function () {
                $(this).removeClass(" ui-state-hover");
            });

 

用live我们可以这样写

    //绑定鼠标移入 移除事件
          
            $("#sortable li").live({ mouseenter: function () {
               
            }, mouseleave: function () {
                   
                }
            });

如果你的代码没错。可就是不执行。那你要考虑你的脚本不支持。我试过1.4.1的就不支持。最后换成了。1.7.1

 

 

不过:live方法是旧版本的jquery才有(jquery1.9以前),on方法只能使用在页面上已有的标签;
想获取未来元素,只能用delegate方法了,具体写法如下:

比如:给动态添加的input添加click事件

 

可以这样写:

   写法1:

  $("body").delegate("#ck", "click", function () {
                alert("delegate");
            });

 

  写法2:

       $("#show").delegate("#ck", "click", function () {
                alert("delegate");
            });

 

写法3:

   $("#show").delegate("input", "click", function () {
                alert("delegate");
            });

当然。也可以绑定多个事件,用委托链

 $("#show").delegate("input", "mouseenter", function () {
                alert("进入");
            }).delegate("input", "mouseout", function () {
                alert("离开");
            });

 

 

或者用官方文档提示:

$(selector).delegate(childSelector,event,data,function)

event   规定附加到元素的一个或多个事件。由空格分隔多个事件值。必须是有效的事件。

 

 $("#show").delegate("#ck", {
                "mouseenter": function () {
                    alert("进入");
                }, "mouseout": function () {
                    alert("离开");
                }
            });

 自定义事件

 $("#show").delegate("#ck", "myCustom", function (a,arg1) {
                alert("自定义事件" + arg1);
            });

            $("#btn").click(function () {
                $("#show").html("<input type='button' name='name' value='动态添加的input' id='ck' />");
            });
            $("#btn2").click(function () {
                $("#ck").trigger("myCustom",90); //触发事件
            });

 


  有绑定事件。那么肯定有一个解绑事件:undelegate 是解绑事件

//单个
            $("#add").click(function () {
                $("body").delegate("#shows","click", showA);
            });
            $("#remove").click(function () {
                $("body").undelegate("#shows", "click", showA);
            });

            //多个
            $("#add").click(function () {
                $("body").delegate("#shows", {
                    "click": showA,
                    "mouseout": showB
                });
            });
            $("#remove").click(function () {
                $("body").undelegate("#shows", {
                    "click": showA,
                    "mouseout": showB
                });
            });

function showA()
        {
            alert("delegate1");
        }
        function showB()
        {
            alert("delegate2");
        }

 

   <input type="button" name="name" value="添加事件" id="add" />

         <input type="button" name="name" value="解绑事件" id="remove" />

        <input type="button" name="name" value="显示事件" id="shows" />

 

 不过这样。你单击2次 “添加事件”则会添加两次showA ,单击100次就添加100次。为了解决重复添加事件

在添加事件前。先取消(我还没有找到更好的方法)

    //单个
            $("#add").click(function (e) {
                $("body").undelegate("#shows", "click", showA); //绑定前先取消绑定事件
                $("body").delegate("#shows", "click", showA);
            });
            $("#remove").click(function () {
                $("body").undelegate("#shows", "click", showA);
            });

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/nsky/p/3240149.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值