jquery中回调函数的问题,大虾帮忙解决一下~_html/css_WEB-ITnose

WBOY
Freigeben: 2016-06-24 12:03:26
Original
1219 Leute haben es durchsucht

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8" /><script src="jquery-1.9.1.min.js" type="text/javascript"></script><script type="text/javascript" >$(function(){    var t = [];    var dt = $("dl.collapse dt");    var dd = $("dl.collapse dd");    dt.each(function(i){        t[i] = false;        $(dt[i]).click((function(i,dd){            return function(){                if( t[i]){                    $(dd).show();                    t[i]  = false;                }                else{                    $(dd).hide();                    t[i]  = true;                }            }        })(i,dd[i]));                   })})</script><style type="text/css">.collapse { border:solid 1px #ccc; margin:2px; float:left; }.collapse dt { padding:8px 8px; background:#7FECAD url(green.gif) repeat-x; font-size:13px; font-weight:bold; color:#71790C; border-bottom:solid 1px #efefef; cursor:pointer; }.collapse dd { margin:0; padding:6px; }.w1 {width:310px;}.w2 {width:221px;}.w3 {width:665px;}</style><title>上机练习</title></head><body><dl class="collapse w1">    <dt>音乐标签</dt>    <dd><img  src="mp31.jpg" / alt="jquery中回调函数的问题,大虾帮忙解决一下~_html/css_WEB-ITnose" ></dd></dl><dl class="collapse w2">    <dt>新歌TOP100</dt>    <dd><img  src="mp32.jpg" / alt="jquery中回调函数的问题,大虾帮忙解决一下~_html/css_WEB-ITnose" ></dd></dl><dl class="collapse w3">    <dt>音乐掌门人</dt>    <dd><img  src="mp33.jpg" / alt="jquery中回调函数的问题,大虾帮忙解决一下~_html/css_WEB-ITnose" ></dd></dl></body></html>
Nach dem Login kopieren


green.gif:
mp31.jpg:
mp32.jpg:
mp33.jpg:

我是想问问这个代码:
$(dt[i]).click((function(i,dd){            return function(){                if( t[i]){                    $(dd).show();                    t[i]  = false;                }                else{                    $(dd).hide();                    t[i]  = true;                }            }        })(i,dd[i]));  
Nach dem Login kopieren

return的作用是什么?
改成下面的为什么不行?
$(dt[i]).click((function(i,dd){                if( t[i]){                    $(dd).show();                    t[i]  = false;                }                else{                    $(dd).hide();                    t[i]  = true;                }        })(i,dd[i])); 
Nach dem Login kopieren


回复讨论(解决方案)

click绑定肯定是一个函数,你修改后,就成一个上来就自执行的函数,肯定是不对的

又因为i作用域的问题,使用闭包解决i索引问题,最终return 函数给 click

一个是传函数,你写的是直接执行,区别那么大

经过两位指点,我已经懂了~thank you

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage