jquery事件绑定与事件委托

事件

页面载入
    ready(fn)  //当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。
    $(document).ready(function(){}) -----------> $(function(){})

事件处理
    $("").on(eve,[selector],[data],fn)  // 在选择元素上绑定一个或多个事件的事件处理函数。

    //  .on的selector参数是筛选出调用.on方法的dom元素的指定子元素,如:
    //  $('ul').on('click', 'li', function(){console.log('click');})就是筛选出ul下的li给其绑定
    //  click事件;

    [selector]参数的好处:
        好处在于.on方法为动态添加的元素也能绑上指定事件;如:

        //$('ul li').on('click', function(){console.log('click');})的绑定方式和
        //$('ul li').bind('click', function(){console.log('click');})一样;我通过js给ul添加了一个
        //li:$('ul').append('<li>js new li<li>');这个新加的li是不会被绑上click事件的

        //但是用$('ul').on('click', 'li', function(){console.log('click');}方式绑定,然后动态添加
        //li:$('ul').append('<li>js new li<li>');这个新生成的li被绑上了click事件
    
    [data]参数的调用:
             function myHandler(event) {
                alert(event.data.foo);
                }
             $("li").on("click", {foo: "bar"}, myHandler)

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <ul>
        <li>111</li>
        <li>222</li>
        <li>333</li>
        <li>444</li>
    </ul>
    <button>add</button>

    <script src="jquery-3.3.1.js"></script>
    <script>
        // 事件绑定
        // let eles=document.getElementsByTagName('li');
        // for (let i=0; i<eles.length; i++) {
        //     eles[i].onclick=function () {
        //         alert('js');
        //     };
        // }; // js绑定方式

        // 简写
        // $('ul li').click(function () {
        //     alert('jquery');
        // });
        // 全写
        // $('ul li').bind('click',function () {
        //     alert('jquery');
        // });
        // 解除
        // $('ul li').unbind('click');


        // 事件委托on()
        $('button').click(function () {
            let $ele=$('<li>');
            let len=$('ul li').length;
            $ele.html((len+1)*111);
            $('ul').append($ele);
        });
        // $('ul li').click(function () {
        //     alert('hello');
        // }); // 新添加的li标签没有点击事件

        $('ul').on('click','li',function(){
            alert('hello');
        }); // 新添加的li标签也有了点击事件
    </script>
</body>
</html>

 

上一篇:css单行文本溢出显示省略号 css多行文本溢出显示省略号(鼠标悬停显示全部内容)


下一篇:简单说明如何设置系统中的NLS_LANG环境变量