0

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

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)
4

3 回答 3

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);
    }
});
于 2013-11-07T21:47:03.613 回答
2

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

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

function show(){
    alert(this);
}
于 2013-11-07T21:47:23.070 回答
1

您必须在 $(document).ready(...); 调用之外声明函数 show

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

于 2013-11-07T21:46:24.757 回答