Jquery问题,函数未定义

时间:2013-11-07 21:43:41

标签: jquery

我写过这段代码似乎是正确的,但出现了这个错误:

Uncaught ReferenceError: show is not defined 

这是我的简单代码:

(function ($) {
    $(document).ready
    (
        function () {
            $('.mapban').parent().jclip(0, 0, 1060, 750);

            $('#mapplane').draggable();

            $('#mapplane > div ').css( 'display', 'none' );

            $('.button').attr('onclick','show(this)');

            function show(button){
            alert(button);

            }

        }





    )
})(jQuery)

3 个答案:

答案 0 :(得分:3)

它不起作用,因为show()函数不在window范围内,它位于document.ready函数和不成功的IIFE范围内,而元素的onclick处理程序试图调用它从窗口(全局)范围。

最好只使用jQuery

jQuery(function($) {
    $('.mapban').parent().jclip(0, 0, 1060, 750);
    $('#mapplane').draggable();
    $('#mapplane > div ').hide();

    $('.button').on('click', show);

    function show(){
        var button = this;
         alert(button);
    }
});

答案 1 :(得分:2)

onclick等元素属性在全局范围内执行。全局范围中不存在show函数。您需要附加对函数的onclick属性的引用,而不是对其属性的字符串。在jQuery中,您可以使用on方法(以及其他方法)执行此操作:

$('.button').on('click', show);

function show(){
    alert(this);
}

答案 2 :(得分:1)

你必须声明在$(document).ready(...);

的调用之外声明函数show

现在声明它的方式,函数的范围限制了该函数的执行时间,并且页面无法看到。