jQuery中的命名函数

时间:2012-02-22 00:11:29

标签: javascript jquery

所以我刚开始使用jQuery,这些功能让我很困惑。我希望能够只是命名一个jQuery函数,然后调用它,而不说它何时应该在函数中调用。我看了,似乎无法理解任何答案。我的代码如下:

<script type="text/javascript">

        $(function() {
            $('a').click(function() {
                $('#box').slideUp();

            });
        });
    </script>

我希望它能做更像这样的事情:

$(function slideBox() {
        $('#box').slideUp();
    });
    </script>

然后通过OnClick事件或按钮上的某些内容调用它。

7 个答案:

答案 0 :(得分:7)

jQuery只是一个基于Javascript的库,你仍然可以在其中使用jQuery代码的常规函数​​。大多数示例属于$(function() { ... });种类的原因是因为Javascript通常是基于事件的,并且对于jQuery的事情最常见的时间是页面加载,$(function() { });是一个快捷方式。

关于jQuery的一个好处是它可以让你编写不引人注目的Javascript,你真的不应该在任何HTML元素的onclick中放置任何代码,因为它是一个非常糟糕的做法和维护噩梦。更标准的方法是:

HTML

<input type="button" id="slideMeUp" value="Up, up, and away!">

的jQuery

$(function() {
    $('#slideMeUp').click(function() {
        $('#box').slideUp();
    });
});

但是,你可以很容易地得到类似的东西:

function slideMeUp() {
    $('#box').slideUp();
}

$(function() {
    // still need this outer function to indicate
    // to only bind the handler when the DOM is ready
    $('#slideMeUp').click(slideMeUp);
});

答案 1 :(得分:1)

你在jQuery之间混淆了,jQuery是一个Javascript库和整个Javascript。

要在Javascript中编写函数slideBox(),您只需:

function slideBox() {
    $("#box").slideUp();
}

答案 2 :(得分:1)

您通常需要

$(function() { 
..
});

这是$(document).ready(function(){})的缩写,在页面加载时运行。

你可以这样做:

function slideBox(speed){     $( “#箱”)效果基本show(速度)。 } $(function(){     slideBox(300); });

或者您可以创建自己的插件:

(function($) {

$.fn.FunctionName = function() {
    return this.each(function() {
        $(this).slideUp();
    });
};

})(jQuery);

您可以将其保存在单独的文件中,然后执行以下操作:

<script>
    $(function() {
        $("#box").FunctionName();
    });
</script>

看看这个:

http://docs.jquery.com/Plugins/Authoring

答案 3 :(得分:0)

JavaScript函数和jQuery函数之间没有任何区别;这是相同的技术。

如果要定义一个滑动框的功能,只需编写一个,然后将其连接到onclick事件。我就是这样做的:

<script type="text/javascript">

    function slideBox() {
        $('#box').slideUp();
    }

    $(function() {
        $('a').click(function() {
            slideBox();
        });
        // or, as Paolo shows:
        $('a').click(slideBox);
    });

</script>

$(function() { });语法简称:

$(document).ready(function() {
    // do things when the DOM is ready
});

无论你放入什么内容都会延迟,直到DOM完成加载。如果后者对你更有意义,那就改用它。

答案 4 :(得分:0)

您可以定义一个函数并将其传递给click处理程序:

<script type="text/javascript">
    function onClick() {
        $('#box').slideUp();
    }

    $("#MyButton").click(onClick);
</script>

答案 5 :(得分:0)

使用原始功能,即

    <script type="text/javascript">

    $(function() {
        $('.uniqueclass').click(function() {
            $('#box').slideUp();

        });
    });
    </script>

我已将'a'更改为'uniqueclass' 然后 使用.uniqueclass类创建一个按钮 - 单击它时,该函数将触发

答案 6 :(得分:0)

您不希望在全局范围内声明您的函数(作为一般规则),因此您可以在jQuery的文档中声明它并通过事件访问您的函数:

<script type="text/javascript">

// jQuery document's ready
$(function() {

    // your function
    var slideBox = function() {
        $('#box').slideUp();
    };

    // event
    $('a').click(function() {
        // call to your function
        slideBox();
    });

});

</script>