对一个对象添加点击事件,想把事件的内容封装到一个函数内怎么做?
    $(".banner li").click(function() {
        var $li = $(this);
        var i = $li.text() - 1;   //0,1,2,3
                                  // if (i >= count) return;
        $(".banner-list i")
                .filter(":visible")
                .fadeOut(400)
                .parent()
                .children()
                .eq(i)
                .fadeIn(400);
        $li.addClass("cur");
        $li.siblings().removeClass("cur");
    }
 想把事件触发后执行的效果封装到一个函数action内,点击后直接调用这个函数,但是this总是搞不明白,封装后的函数action该怎么写呢?这是一个简单的轮播图的效果,意思就是我怎么在action函数内监听我点击的是哪个li标签

2个回答

一样的,你的函数内的this对象还是指向点击的li对象

  function Action(){
        var $li = $(this);
        var i = $li.text() - 1;   //0,1,2,3
                                  // if (i >= count) return;
        $(".banner-list i")
                .filter(":visible")
                .fadeOut(400)
                .parent()
                .children()
                .eq(i)
                .fadeIn(400);
        $li.addClass("cur");
        $li.siblings().removeClass("cur");
 }
 $(".banner li").click(Action);
fashion1993
我不正常Hen久了 回复showbo: 明白了,非常感谢啊!!
5 年多之前 回复
showbo
支付宝加好友偷能量挖,胡杨等着我的招呼 回复我不正常Hen久了: $('ul.list', $banner),这个是在$banner对象里面找和ul.list匹配的对象,第二个参数是上下文,如果没有指定默认为document。jQuery(expression,[context])
5 年多之前 回复
fashion1993
我不正常Hen久了 var $banner = $('#banner'), $slides = $('ul.list', $banner) jquery定义变量 后面带两个参数是什么意思
5 年多之前 回复
showbo
支付宝加好友偷能量挖,胡杨等着我的招呼 回复我不正常Hen久了: 要去掉Action()后的(),你是执行了Action方法,将返回值作为click的事件函数了。。嘿嘿,记得采纳
5 年多之前 回复
fashion1993
我不正常Hen久了 哎,可以,奇怪,刚才这么写怎么不行。我刚才是click(Action());这么写为什么不可以啊
5 年多之前 回复

这里的this指$(".banner li"),如果实在迷糊this,就把要操作的li当做参数传递过去,不用this

立即提问