美文网首页
jQuery的自定义事件,事件的委托,节点操作

jQuery的自定义事件,事件的委托,节点操作

作者: 常伟波 | 来源:发表于2018-07-29 19:43 被阅读0次

    1. 自定义事件

    除了系统事件外,可以通过bind方法自定义事件,然后用tiggle方法触发这些事件。

    //给element绑定hello事件
    element.bind("hello",function(){
        alert("hello world!");
    });
    
    //触发hello事件
    element.trigger("hello");
    

    2. 事件冒泡

    * 什么是事件冒泡*
    在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)

    事件冒泡的作用
    事件冒泡允许多个操作被集中处理(把事件处理器添加到一个父级元素上,避免把事件处理器添加到多个子级元素上),它还可以让你在对象层的不同级别捕获事件。

    阻止事件冒泡
    事件冒泡机制有时候是不需要的,需要阻止掉,通过 event.stopPropagation() 来阻止

    $(function(){
       var $box1 = $('.father');
       var $box2 = $('.son');
       var $box3 = $('.grandson');
       $box1.click(function() {
           alert('father');
       });
       $box2.click(function() {
           alert('son');
       });
       $box3.click(function(event) {
           alert('grandson');
           event.stopPropagation();
    
       });
       $(document).click(function(event) {
           alert('grandfather');
       });
    })
    
    ......
    
    <div class="father">
       <div class="son">
           <div class="grandson"></div>
       </div>
    </div>
    

    3. 事件委托

    事件委托的写法

    $(function(){
        $list = $('#list');
        $list.delegate('li', 'click', function(event) {
            $(this).css({background:'red'});
        });
    })
    ...
    <ul id="list">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
    

    取消事件委托

    // ev.delegateTarge 委托对象
    $(ev.delegateTarge).undelegate();
    
    // 上面的例子可使用 $list.undelegate();
    

    4. jquery元素节点操作

    创建节点
    var $div = $('<div>');
    var $div2 = $('<div>这是一个div元素</div>');
    
    插入节点

    1、append()和appendTo():在现存元素的内部,从后面插入元素

    var $span = $('<span>这是一个span元素</span>');
    $('#div1').append($span);
    ......
    <div id="div1"></div>
    

    2、prepend()和prependTo():在现存元素的内部,从前面插入元素

    3、after()和insertAfter():在现存元素的外部,从后面插入元素

    4、before()和insertBefore():在现存元素的外部,从前面插入元素

    删除节点
    $('#div1').remove();
    

    append和appendTo的区别

    1. append(content)方法

    方法作用:向每个匹配的元素内部追加内容。

    参数介绍:content (<Content>): 要追加到目标中的内容。

    用法示例:

    HTML代码为<p>I come from </p><p>I love </p>

    向所有p标签中追加一个单词china,则写法为 $("p").append("china");

    结果为:<p>I come from china</p><p>I love china </p>

    1. appendTo(expr)方法

    方法作用:把所有匹配的元素追加到指定的元素元素集合中。

    参数介绍:expr (String): 用于匹配元素的jQuery表达式。

    用法示例:

    HTML代码为<b>I love china </b><p></p>

    把标签b追加到p元素中,写法为$("b").appendTo("p");

    结果为:><p><b>I love china </b></p>

    使用appendTo这个方法是颠倒了常规的$(A).append(B)的操作,即不是把B追加到A中,而是把A追加到B中

    删除节点
    $('#div1').remove();
    

    相关文章

      网友评论

          本文标题:jQuery的自定义事件,事件的委托,节点操作

          本文链接:https://www.haomeiwen.com/subject/roqwmftx.html