首页 新闻 会员 周边 捐助

query 事件委托 this指向的问题

0
悬赏园豆:20 [已解决问题] 解决于 2014-12-24 13:49
 1 <script type="text/javascript">
 2 $(function(){
 3     $('ul').delegate('li','click',function(){
 4         //这里要获取li的this该怎么写,call好像没用,这个this 都是指向ul的,比例我要让this指向li然后显示他们的背景
 5         $('ul').undelegate();
 6         
 7     });
 8     
 9 });
10 </script>
11 
12 <body>
13 <ul>
14 <li>1111</li>
15 <li>2222</li>
16 <li>3333</li>
17 </ul>
18 </body>
小鬼文的主页 小鬼文 | 初学一级 | 园豆:108
提问于:2014-12-24 10:05
< >
分享
最佳答案
0

建议你输出看看。this是指向li的才对,不知道你为什么说不是~

收获园豆:20
幻天芒 | 高人七级 |园豆:37207 | 2014-12-24 11:03

我给this加背景点击只能是第一个显示背景颜色,其它都没反应

小鬼文 | 园豆:108 (初学一级) | 2014-12-24 11:08

@小鬼文: 你这是li的点击事件,假设你有3个li    点第一个li的时候   this就是第一个li,你给this设置背景当然也就只有第一个li有背景咯,当你点第二个li的时候,this就指向第二个li了

骑着蜗牛耍流氓 | 园豆:135 (初学一级) | 2014-12-24 11:12

@小鬼文: 你是想实现菜单功能么?如果是的话,直接

$(this).sublings().removeClass('active').end().addClass('active');

当然你需要为class ="active"设定一个样式。

幻天芒 | 园豆:37207 (高人七级) | 2014-12-24 11:43
其他回答(4)
1

$('ul li')    就是你的li

刘宏玺 | 园豆:14020 (专家六级) | 2014-12-24 10:11

 这是个事件委托啊!!!!

支持(0) 反对(0) 小鬼文 | 园豆:108 (初学一级) | 2014-12-24 10:49
0

$('ul li').click(function(){

……

});

大楚打码人 | 园豆:4313 (老鸟四级) | 2014-12-24 10:19

这里有个delegate事件委托,如果你这样写就不是事件委托了

支持(0) 反对(0) 小鬼文 | 园豆:108 (初学一级) | 2014-12-24 10:50

@小鬼文: 

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script src="../JS/jquery-1.8.2.js"></script>
    <script type="text/javascript">
         $(function(){
                $('ul').delegate('li','click',function(){
                    //这里要获取li的this该怎么写,call好像没用,这个this 都是指向ul的,比例我要让this指向li然后显示他们的背景
                    alert($(this).text());
                       // $('ul').undelegate();
                
                    });
            
             });
        10 </script>
</head>
<body>
    <ul>
        <li>1111</li>
        <li>2222</li>
        <li>3333</li>
    </ul>
</body>
</html>

我测试过的.你运行看看

支持(0) 反对(0) 大楚打码人 | 园豆:4313 (老鸟四级) | 2014-12-24 11:38

@神叨大侠: 噢把undelegate去掉就可以了

支持(0) 反对(0) 小鬼文 | 园豆:108 (初学一级) | 2014-12-24 13:47

@小鬼文: 啊,给错人了,晕,不好意思

支持(0) 反对(0) 小鬼文 | 园豆:108 (初学一级) | 2014-12-24 13:51

@小鬼文: 没事,问题解决了就行!

支持(0) 反对(0) 大楚打码人 | 园豆:4313 (老鸟四级) | 2014-12-24 14:29

@神叨大侠: 但还是很感谢你

支持(0) 反对(0) 小鬼文 | 园豆:108 (初学一级) | 2014-12-25 10:35
0

$(this)就是指向li

骑着蜗牛耍流氓 | 园豆:135 (初学一级) | 2014-12-24 11:07
0

你也只是去改个背景, 搞得这么复杂, 直接遍个历, 一个一个加不就行了????

$("ul li").each(function (i) {
$(i).click(function () {
改背景...
});
});

 

问天何必 | 园豆:3311 (老鸟四级) | 2014-12-24 11:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册