javascript - 求事件委托的优雅写法
迷茫
迷茫 2017-04-11 12:16:43
[JavaScript讨论组]
$('body').on('click',$("#id1"),function(){
     $('html body').animation({
        scrollTop: $("#id1").offset().top
    },0)
})
$('body').on('click',$("#id2"),function(){
     $('html body').animation({
        scrollTop: $("#id2").offset().top
    },0)
})

id选择器都是同一个button类型的,如果有多个button,优雅的写法应该怎么写
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(8)
迷茫

你的代码看起来就很优雅。

迷茫
$('body').on('click',$(".className"),function(){
     $('html body').animation({
        scrollTop: $(this).offset().top
    },0)
})

//或者

$('body').on('click',$("#id1,#id2"),function(){
     $('html body').animation({
        scrollTop: $(this).offset().top
    },0)
})
阿神
$('body').on('click', 'button', function(){
     $('html body').animation({
        scrollTop: $(this).offset().top
    },0)
})

好多年没写过 jq 了,具体 api 忘了,大概就是这个意思

迷茫
$(document).on('click', ev => {
  $('html, body').animation({ scrollTop: $(ev.target).offset().top })
})
怪我咯
function scrollToBtn(){
    var i = $(this).offset().top;
    $('body').scrollTop(i);
}
$(document).on('click', 'button', scrollToBtn);

另外歪个楼,如果没动画的话,应该也可以直接写锚点。

黄舟

你既然同类型的按钮,那就给他们弄一个共性啊,直接点就是同样的class,干嘛要id

高洛峰

貌似这样?

$('body').on('click',function(e){
    var ev=e||window.event;
    var target=ev.target||ev.srcElement;
    var id=target.id;
    if(id.indexOf("id")!=-1){
        $('html body').animation({
            scrollTop: $(id).offset().top
        },0)
}
})
 
天蓬老师
$(document).on('click', 'button', function(e){
    $('body').scrollTop($(this).offset().top);
});
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号