为了账号安全,请及时绑定邮箱和手机立即绑定

关于实现效果中 find() each() 的角色的几个问题,这样写有什么好处?

关于实现这个focus我尝试了几种想法,都可以实现,但我想知道分别得好处或者弊端,谢谢。

想要改变li的背景色,我首先想到的是$("li").css()这样的方式。

当我看到imooc上几节课的教程,是这么写的:

/*------------------------------------------------------------/
功能:设置列表中表项获取鼠标焦点时的背景色
参数: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);

  1. 加粗的地方$(this).find("li").each(function() 如果不要each() 也能实现,这样有什么区别吗?

  2. 如果不使用ul,直接使用li有什么区别?(例:把这句话去除 find("li").each(function())

  3. return $(this); 去了也可以正常运行,请问有什么区别?

正在回答

1 回答

这个坑比较大~

问题3比较容易答 其实就是JS的this用法 没定义的时候 this就是默认“被选中的这里”的意思

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
jQuery基础课程
  • 参与学习       154768    人
  • 解答问题       7184    个

加入课程学习,有效提高前端开发速度

进入课程

关于实现效果中 find() each() 的角色的几个问题,这样写有什么好处?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信