点击时会报错 show is not defined
为什么把show()函数放$(function(){})外面就好了?
写成这样看看
$(function() {
leftMenu();
function show() {
alert('hhhhhhhh');
}
function leftMenu() {
var html = '<div class="show" onclick="'+show()+'">click me</dv>'
$('#box').append(html);
}
})
直接调show()它其实是立即执行的,如果写成onclick="show()",$(document).ready()是文档加载完后执行的,当页面结构完成了,你再点击触发show(),这个时候就会去window下面查找show(),当然结果就是undefined
如果实在要写在$(funciton(){})里,可以这样做:
$(function() {
leftMenu();
/*function show() {
alert('hhhhhhhh');
}*/
function leftMenu() {
var html = '<div class="show">click me</dv>'
$('#box').append(html);
}
//做个事件委托
$('body').on('click', $('.show'), function() {
alert('aaaaa')
})
})
onclick会在window对象底下找自定义函数show(),也就是window.shou()。。所以是要放在$(function(){})函数外边的。。所以以后把自定义函数都写在$(function(){})外边,一些后续的处理过程和调用,放在$(function(){})里面,确保文档加载完成之后调用
因为,$(function(){}) = $.ready(),也就是说页面加载完毕后才声明函数show , 但是你把show()写在行内onclick事件,而这个时候的show函数还未声明,所以会报 not defined
8 回答4.1k 阅读✓ 已解决
6 回答2.5k 阅读✓ 已解决
5 回答2.3k 阅读✓ 已解决
5 回答5.8k 阅读✓ 已解决
4 回答2k 阅读✓ 已解决
3 回答2.1k 阅读
4 回答2.6k 阅读✓ 已解决
onclick="show()"执行的是window.show()