JavaScript的 onclick事件是如何调用jquery 方法的
2013-11-26 来自:鄭。囡 9 人回应
  
<input type='button' id='abc' value='-' title='测试1' onclick='abc()'>

$(document).ready(function(){
function abc(){
alert(1111)
}
})

Uncaught ReferenceError abc function is not defined 错误提示
在$(document).ready(function(){})中不能调用。但是将方法写在外面即可调用

  
<input type='button' id='abc' value='-' title='测试1' onclick='abc()'>
function abc(){
alert($("#abc").val())
}

能够弹出val值

那么js和jquery混着在一起了。这样写会有什么问题?

2013-12-07 来自:跳蚤

事件绑定的逻辑错了,要么在document.ready中绑定,要么把触发的函数命名在document.ready外部。

2013-12-05 来自:时来运转小三日

顶下1楼。
是作用域的问题。
原因如下:

//直接写在元素里:那么点击input时,首先要在全局环境中寻找是否有名为abc的函数,有则执行,没有就不执行
<input type='button' id='abc' value='-' title='测试1' onclick='abc()' >
<script type="text/javascript">
$(document).ready(function(){
//abc这个函数只能在这里面被访问到,它是个局部变量而不是全局变量
var abc= function(){
alert(1111)
}
})

</script>

解决如下:
(1)你可以在ready()里面进行绑定

<input type='button' id='abc' value='-' title='测试1'>
<script type="text/javascript">
$(document).ready(function(){
$('#abc').click(abc);
var abc= function(){
alert(1111)
}
})
</script>

(2)也可以不用ready,直接把abc写在全局。

<script type="text/javascript">
var abc= function(){
alert(1111)
}
</script>
<input type='button' id='abc' value='-' title='测试1' onclick='abc()'>
2013-12-03 来自:不可不可

既然abc是内联调用,就没必要把abc定义到$(document).ready()方法里面,有点画蛇添足的味道。
如果想访问函数内的函数,可以用闭包方法解决,避免污染全局变量

void (fucntion(global,$){
var abc = function() {
//do something
}
global.abc = abc;
}(window, jQuery));
2013-12-03 来自:静默

scope原因, abc函数定义在 匿名函数里, 外面是看不到的.

改一下:
1). abc作为全局变量:

<input type='button' id='abc' value='-' title='测试1' onclick='abc()' >

$(document).ready(function(){
abc= function(){
alert(1111)
}
})

或者
2). 把onclick逻辑写入 jquery ready里:

<input type='button' id='abc' value='-' title='测试1' >

$(document).ready(function(){
$('#abc').click(function(){
alert(111);
});
})
2013-12-01 来自:April Hong

事件不写在input里面。直接在$(function(){})里面调用事件
$("input[id='abc']").click(){
......
}

2013-11-30 来自:我是老左

scope原因, abc函数定义在 匿名函数里, 外面是看不到的.

改一下:
1). abc作为全局变量:

  
<input type='button' id='abc' value='-' title='测试1' onclick='abc()' >

$(document).ready(function(){
abc= function(){
alert(1111)
}
})
2013-11-28 来自:KarenYeung

既然abc是内联调用,就没必要把abc定义到$(document).ready()方法里面,有点画蛇添足的味道。
如果想访问函数内的函数,可以用闭包方法解决,避免污染全局变量

  
void (fucntion(global,$){
var abc = function() {
//do something
}
global.abc = abc;
}(window, jQuery));
2013-11-27 来自:迷子

顶下1楼。
是作用域的问题。
原因如下:

  
//直接写在元素里:那么点击input时,首先要在全局环境中寻找是否有名为abc的函数,有则执行,没有就不执行
<input type='button' id='abc' value='-' title='测试1' onclick='abc()' >
<script type="text/javascript">
$(document).ready(function(){
//abc这个函数只能在这里面被访问到,它是个局部变量而不是全局变量
var abc= function(){
alert(1111)
}
})
2013-11-27 来自:Nightmare

这里边只有onclick是原生js的东西,只起到触发事件的作用,abc()那个函数中才是调用jquery的接口的,所以并没有什么混用的顾虑。

您的回应

你还未登陆,不能回应!登陆