我们给元素绑定单击事件。用得最多的都是$("#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",); //触发事件
});

有绑定事件。那么肯定有一个解绑事件: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);
});

jQ live用法的更多相关文章

  1. jq命令用法总结

    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介 如果说要给Linux文本三剑客(grep.sed.awk)添加一员的话,我觉得应该是jq命令,因为jq命令是用来处 ...

  2. jq 部分用法

    这几天一直在写前台,因为jq是在客服端处理数据的,所以公司,一般都用这种方法,下面是我这几天用到的一些东西 1.修改table表格的第一轮显示值 function changeTableRowValu ...

  3. jq each 用法以及js与json互转

    $(function(){ var json = '[{"id":"1","tagName":"apple"},{&qu ...

  4. jQ $.extend用法

    $.extend()函数 1.用将一个对象或多个对象的内容合并到目标对象, 2.如果多个对象具有相同的属性,则后者覆盖前者的属性值. 例子: var object1={ apple:1, banana ...

  5. JQ初学总结一

    Jquery是最火的JavaScript库,大部分web开发都会用到就jquery,而作为初学者看了一些jq的用法总结自己的学习以增强自己的认知. 普通的javascript的缺点是:每种控件的操作方 ...

  6. 一周学会Mootools 1.4中文教程:(1)Dom选择器

    利器: 君欲善其事须先利其器,好吧因为我们的时间比较紧迫,只有六天而已,那么六天的时间用死记硬背的方式学会Mt犹如天方夜谭,因此我们需要借鉴一下Editplus的素材栏帮我们记忆就好了,当我们需要用到 ...

  7. kissy小记

    <script> KISSY.add('demo',function(S ,require, exports, module){ var Node = require('node'); v ...

  8. selenium span[contains]中使用变量

    province = '湖南' driver.find_element_by_xpath('//span[contains(text(),"'+province+'").click ...

  9. jq和js用法:入口写法

    jq和js入口写法demo: <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

随机推荐

  1. Javascript常见性能优化

    俗话说,时间就是生命,时间就是金钱,时间就是一切,人人都不想把时间白白浪费,一个网站,最重要的就是体验,而网站好不好最直观的感受就是这个网站打开速度快不快,卡不卡. 当打开一个购物网站卡出翔,慢的要死 ...

  2. xmlWriter

    MemoryStream msXml = new MemoryStream(); XmlTextWriter xmlWriter = new XmlTextWriter(msXml, Encoding ...

  3. Why is IMAP better than POP?

    https://www.fastmail.com/help/technical/imapvspop.html POP is a very simple protocol that only allow ...

  4. mac下升级terminal/终端的subversion版本方法

    雖然現在程式碼管理已經以 Git 為主了,不過偶爾需要維護一些舊案子還是會用 SVN,懶得轉了. Mac OS 本身有內建 SVN,不過卻是 1.6 版,最近修改一個舊案子就有碰到 project 已 ...

  5. shell中的环境变量:local,global,export

     1.local一般用于局部变量声明,多在在函数内部使用.实例如下:      echo_start() { local STR="$1" echo "...... ${ ...

  6. Linux性能监控命令——sar

    介绍 sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的 ...

  7. 【CF708E】Student's Camp 组合数+动态规划

    [CF708E]Student's Camp 题意:有一个n*m的网格,每一秒钟,所有左面没有格子的格子会有p的概率消失,右面没有格子的格子也会有p的概率消失,问你t秒钟后,整个网格的上边界和下边界仍 ...

  8. iOS - 国际化语言切换

    iOS国际化:如何切换语言   1.国际化就是将标签.提示信息等信息放到资源文件中,随着程序需要的语言提供对应的资源文件.以key/value对存储,每个资源的key值不变,value随着需求改变. ...

  9. 微信 获取wx.config 参数 基类

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  10. Java--static、final、static final的区别

    一.final final修饰类:表示该类不能被继承:final类中的方法默认是final的: final修饰方法:表示该方法无法被重写: final修饰方法参数:表示在变量的生存期中它的值不能被改变 ...