为什么需要在其<ul>父元素上调用,而不是在<li>上调用

来源:2-8 自定义对象级插件——lifocuscolor插件

慕粉2041042872

2017-07-19 10:40

为什么需要在其<ul>父元素上调用,而不是在<li>上调用

写回答 关注

1回答

  • Jerps
    2017-07-20 10:42:42

    回答问题之前,先看下插件的代码:

    /*------------------------------------------------------------/
    功能:设置列表中表项获取鼠标焦点时的背景色
    参数:li_col【可选】 鼠标所在表项行的背景色
    返回:原调用对象
    示例:$("ul").focusColor("red");
    /------------------------------------------------------------*/
    ; (function($) {
        $.fn.extend({
            "focusColor": function(li_col) {
                var def_col = "#ccc"; //默认获取焦点的色值
                var lst_col = "#fff"; //默认丢失焦点的色值
                //如果设置的颜色不为空,使用设置的颜色,否则为默认色
                li_col = (li_col == undefined) ? def_col : li_col;
                $(this).find("li").each(function() { //遍历表项<li>中的全部元素
                    $(this).mouseover(function() { //获取鼠标焦点事件
                        $(this).css("background-color", li_col); //使用设置的颜色
                    }).mouseout(function() { //鼠标焦点移出事件
                        $(this).css("background-color", "#fff"); //恢复原来的颜色
                    })
                })
                return $(this); //返回jQuery对象,保持链式操作
            }
        });
    })(jQuery);

    由此可见:遍历表项的时候是利用$('ul').find('li').each()方法来的。

    所以只需要获得ul,就可以利用事件转移快速高效给所有ul>li都加上这个效果!

jQuery基础(五)一Ajax应用与常用插件

如何用jquery实现ajax应用,加入学习,有效提高前端开发速度

69094 学习 · 400 问题

查看课程

相似问题