我有以下jquery函数,当我在其中包含click功能时工作非常好但是当我在主函数之外添加它时它不起作用,请问我该如何有效地修复工作?
示例1
(function tryBarSlot() {
function getit(){
alert('HH');
}
/* Using the onclick function here works*/
$('#play_button').click(function(event) {
getit();
});
})();

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<button id="play_button">TRY</button>
&#13;
示例2
(function tryBarSlot() {
function getit(){
alert('HH');
}
})();
$(function(){
//getit(); /*OR*/
$('#play_button').click(function(event) {
getit();
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<button id="play_button">TRY</button>
&#13;
我希望这个例子有用。
答案 0 :(得分:0)
错误信息非常明确:&#34; getit未定义&#34;。 getit尚未定义,因为它超出了您当前所在的范围。
JavaScript具有函数范围:每个函数都创建一个新范围。 范围确定这些变量的可访问性(可见性)。 函数内定义的变量不可访问(可见) 在功能之外。
在您的秒代码示例中,您使用$(function()创建一个新范围,因此getit不再可访问
答案 1 :(得分:0)
$('#play_button').click(getit);
function getit() {
alert('HH');
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<button id="play_button">TRY</button>
&#13;
答案 2 :(得分:0)
如果您想从window.getit = getit
(function tryBarSlot() {
function getit(){
alert('HH');
}
window.getit = getit;
})();
$(function(){
//getit(); /*OR*/
$('#play_button').click(function(event) {
getit();
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<button id="play_button">TRY</button>
&#13;
答案 3 :(得分:0)
这应该有用。
[__C.NSLinguisticTagScheme(_rawValue: TokenType),
__C.NSLinguisticTagScheme(_rawValue: Language),
__C.NSLinguisticTagScheme(_rawValue: Script)]
&#13;
var getit;
(function tryBarSlot() {
getit = function(){
alert('HH');
}
})();
$(function(){
//getit(); /*OR*/
$('#play_button').click(function(event) {
getit();
});
});
&#13;