ホームページ  >  記事  >  ウェブフロントエンド  >  jqueryのコールバック関数の問題、prawnが解決に役立ちます~_html/css_WEB-ITnose

jqueryのコールバック関数の問題、prawnが解決に役立ちます~_html/css_WEB-ITnose

WBOY
WBOYオリジナル
2016-06-24 12:03:261176ブラウズ

<!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" /></dd></dl><dl class="collapse w2">    <dt>新歌TOP100</dt>    <dd><img src="mp32.jpg" /></dd></dl><dl class="collapse w3">    <dt>音乐掌门人</dt>    <dd><img src="mp33.jpg" /></dd></dl></body></html>


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]));  

return の関数は何ですか?
なぜそれができないのですか?以下に変更されましたか?


ディスカッションへの返信 (解決策)

クリックバインディングは、変更すると、呼び出されたときに自動的に実行される関数になります。間違いなく間違っています

そして、 i スコープの問題のため、クロージャを使用して i インデックスの問題を解決し、最後にクリックする関数を返します

1 つは関数を渡すことであり、作成した関数は直接実行されます。違いは次のとおりです。とても大きいです

2人の指導の後、もう理解しました〜ありがとう

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。