5

我有这个 jQuery 函数:

$('.scrollToLoginBox').click(function(){
    $('html, body').animate({scrollTop: $("#LoginBox").offset().top-5}, 'slow');                
});

我不希望它作为一个类,我希望能够这样称呼它:onClick="scrollTo(id);"

那么,我怎样才能把函数放在 javascript 格式中:

function scrollTo(id){
    $('html, body').animate({scrollTop: $("#'+id+'").offset().top-5}, 'slow');
}

出版商编辑:

我不恨你们 ;o) 我感谢你们所有的回答,但我不是想得到身份证。另一方面,我正在尝试构建我在上面发布的相同功能。因此,单击时我将发送 id(我有例如 Login 或 LoginBox),以便该功能将缓慢滚动到锚点(id=Login 或 LoginBox)。

现在我必须这样称呼它:class="scrollToLoginBox",而不是我想称之为 onClick="scrollTo('LoginBox');

我有 20 个与上述相同的函数,每个 id 一个。我拥有但我不想要的另一个示例是:class="scrollToSettings",而不是我想将其称为 onClick="scrollTo('LoginBox'); 或 onClick="scrollTo('Settings');

            $('.scrollToSettings').click(function(e){
        $('html, body').animate({scrollTop:$("#settings").offset().top-5}, 'slow');         
        return false;       
    });

    $('.scrollToFaqs').click(function(e){
        $('html, body').animate({scrollTop:$("#formCode").offset().top-5}, 'slow');         
        return false;       
    });

我只想要一个接受 id 的函数。我只是不知道如何将 id 传递给这个 jQuery 函数;o)

4

1 回答 1

8

如果您想将 id 传递给被点击的项目,那么您需要使用this.id

现场演示

onClick="scrollTo(this.id);"

如果你想传递 id ,some other control那么你只需将 id 作为字符串传递。

onClick="scrollTo('idOfHTMLElement');"

根据注释进行编辑,用于将值从 html 元素传递到 javascript 函数。

数据属性用于保存自定义属性,可以在 jQuery 函数中使用data()函数访问。

html

<div class="scrollToCal" data-idtopass="Anchor">click me to go to Anchor</div>​

Javascript

jQuery(document).ready(function($) {

    $('.scrollToCal').click(function() {

        $('html, body').animate({
            scrollTop: $('#' + $(this).data('idtopass')).offset().top - 5
        }, 'slow');
        return false;
    });

});​
于 2012-12-24T09:29:50.807 回答