1 $(document).ready(function(){ 2 // this can work well 3 // $("button").click(function(){ 4 // $("p").slideToggle(); 5 // }); 6 7 $("button").on("click",toggle('p')); 8 9 10 }) 11 12 function toggle(obj){ 13 $(obj).slideToggle(); 14 }
1 <p>这是一个段落。</p> 2 <button>切换</button>
注册事件时,第二个参数是事件处理函数。
当你$("button").on("click",toggle('p')); 这样写时。
等价于$("button").on("click", undefined); 为什么是undefined,因为toggle('p')的结果就是undefined。
当这段注册事件使用如上代码时,很明显之后的click,由于没有绑定function,所以就不会执行了。
将函数返回值修改之后还是只能执行一次没有绑定事件 还是这样修改还是有问题?
function toggle(obj) { return $(obj).slideToggle(); }
@小kk06: 你这样修改,相当于return undefined,那不还是undefined嘛。所以结果是一样的。
要理解函数和函数结果的差异。
@幻天芒: 呀 一时心急忘了这个了 那什么时候可以在绑定事件的时候直接调用函数呢
@小kk06: 使用bind。
function test(){ alert('test'); } $('#b1').click(test.bind());
$(document).ready(function() { // this can work well // $("button").click(function(){ // $("p").slideToggle(); // }); $("button").on("click", function() { toggle('p'); }); }) function toggle(obj) { $(obj).slideToggle(); }
你要的是這個
我知道这样写可以,我的意思是为什么上面那么写不行?