jQuery-jquery bind绑定事件问题

发布于 2016-10-11 21:09:55 字数 718 浏览 1123 评论 5

1、$("#a").bind('click',function(){alert($(this).html())});//正常
2、$("#b").bind('click',showtest('showtest'));//直接就执行showtest函数了,绑定失败
showtest是定义的一个函数,为什么第二种绑定就有问题呢
以下是代码:

<SCRIPT LANGUAGE="JavaScript" src="jquery-1.7.2.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--
function showtest(con){
alert(con);
}
$(function(){
$("#a").bind('click',function(){alert($(this).html())});
$("#b").bind('click',showtest('showtest'));
})
//-->
</SCRIPT>
<body>
<div id="a" style="width:200px;height:200px">aaaaaa</div>
<div id="b">bbbbbb</div>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

晚风撩人 2017-06-09 17:31:18

 <SCRIPT LANGUAGE="JavaScript" src="jquery-1.7.2.js"></SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--
function showtest(con){
alert(con);
}
$(function(){
$("#a").bind('click',function(){alert($(this).html())});
$("#b").bind('click',function(){showtest('showtest')});
})
//-->
</SCRIPT>
<body>
<div id="a" style="width:200px;height:200px">aaaaaa</div>
<div id="b">bbbbbb</div>

想挽留 2017-05-04 01:52:17

第二个 $("#b").bind('click',showtest('showtest')); ,这里相当与调用函数showtest() ,在js开始解析的时候认为showtest('showtest')是调用函数。正确的写法应该是不加括号的。jquery 是通过apply的方式调用回调函数的,只传入函数名就可以了,调用类似
showtest.apply(this)

浮生未歇 2017-03-02 18:37:27

第二种绑定方法,第二个参数是要传给被调用函数的参数,第三个参数是被调用的函数名(不带括号和参数)。

 $("#b").bind('click',{con:'showtest'},showtest);

function showtest(event){
var con = event.data.con;
alert(con);
}

瑾兮 2016-12-14 09:48:38

研究一下jquery的源码你就明白了,你二种情况其实是把函数的结果绑定到click事件上面,修改一下你的showtest函数就可以了

function showtest(con) {
return function(){alert(con);}
}

jquery中bind函数如下:

 bind: function( types, data, fn ) {
return this.on( types, null, data, fn );
}

从中可以看出它其实是调用的on函数,源码你可以参照jquery,只要把上面的data和fn两个参数输出来,你就会明白为什么第二种绑定失败了

甜柠檬 2016-12-02 16:05:47

如果只需要简单的在处理函数中使用event对象,可以这样绑定

function showtest(event){
alert(event.type);
}

$("#b").bind('click',showtest);
//------------- -------------- --------------
// 如果还要传入其他数据,可以利用第二个参数传入
// 例子:http://jsfiddle.net/w3dK3/9/
var message = 'Spoon!';
var clickHandler = function(event) {
alert(event.data);
}
$('#foo').bind('click', [message, 1], clickHandler);​
// $('#foo').bind('click', {msg:message}, clickHandler);​
// $('#foo').bind('click', message, clickHandler);​

相关API:http://www.css88.com/jqapi-1.5/#p=bind

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文