jquery上的新增功能,在选择器中传递参数时遇到问题

时间:2012-01-09 23:16:26

标签: jquery arguments selector

我需要一些帮助将参数传递给jquery函数。我有一个带有

的html标题
onclick="slide(#aboutit);"

我在标题中创建了一个函数

<script type="text/javascript">
    function slide(element){
        var slid = element;
        slid.slideToggle("slow");
    }
</script>

由于某些我不明白的原因,这是行不通的。如果不是我使用

,我可以让它工作
function slide(){
    $('#aboutit').slideToggle("slow");
}

但我不想为网站的每个部分创建一个新的滑动功能。

提前致谢。

3 个答案:

答案 0 :(得分:2)

您的代码slide(#aboutit);无效。你可以做的是slide($('#aboutit'))

答案 1 :(得分:0)

使用jQuery,您可以使用文档就绪函数在绘制DOM时加载项目。然后将所有项目放在document.ready()函数中。

<script type="text/javascript">
jQuery(document).ready(function() {


    $('#aboutit').slideToggle("slow");

    $('#anotherdiv').slideToggle("slow");

    $('#yetanotherdiv').slideToggle("slow");


});
</script>

以上假设您在运行document.ready()函数之前调用了jquery核心。

尽管如此,您很可能还需要一些其他功能。否则,您的内容只需在页面加载时滑动。如果那是你想要的。大。如果您想在点击上滑动,则需要调用点击功能:

<script type="text/javascript">
jQuery(document).ready(function() {


    $('#aboutit').click(function(){
       $(this).slideToggle("slow");
     });


});
</script>

答案 2 :(得分:0)

我知道你已经接受了一个解决你的代码的两个问题的答案(不带引号的字符串以及你的slide()函数期望jQuery对象不是字符串的事实),但是因为你提到了这个:

  

我不想为网站的每个部分创建一个新的滑动功能

而不是为要滑动的每个元素编码onclick,而不必像在当前代码中那样单独指定元素的id:

onclick="slide($('#elementid'));"

如果您为要滑动的所有元素(无论它们的类型)分配了一个公共类,您的代码将更加简单和易于维护,如下所示:

<h1 class="slideMe">A heading</h1>
<div class="slideMe">A div</div>
<h2 class="slideMe otherclass">Note elements can have multiple classes</h2>
<p class="slideMe">And so on and so forth</p>

因为那时你可以通过编写一行代码来分配基于该类的点击处理程序,将幻灯片功能应用于所有。需要在文件中(或在身体的最后):

$(document).ready(function() {
    $(".slideMe").click(function() {
         $(this).slideToggle("slow");
    });
});

请注意,这几乎比现有的slide()函数长。单击单个项目时,它将滑动。容易。

另请注意,如果您随后添加了需要播放的其他元素,则无需为其提供id属性,然后将onclickslide()调用{ id,您只需添加“slideMe”类,它就会自动发生。