我写过这段代码似乎是正确的,但出现了这个错误:
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)
答案 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现在声明它的方式,函数的范围限制了该函数的执行时间,并且页面无法看到。