0

私は非常に多くのチュートリアルを見てきましたが、デモでは次のようなものがあります。

// my dummy example
$(function() {
    $('a.change').bind('click',function(event){
        $('body').css('background','#27272')
    });
});

$(function() {何が行われているのか、なぜ機能しないのかわかりません。他のコードを壊さずに正しく動作させるにはどうすればよいですか?

4

4 に答える 4

4

$(function() {})$(document).ready(handler)詳細については、ここで見つけることができるショートコードです

投稿されたコードは何も壊してはいけません。多分あなたは私たちがそれを調べることができるjsfiddleを提供することができます。

于 2012-09-07T13:01:07.313 に答える
3

$(function() {のショートカットです:$(document).ready(function() { ... });。後者のバージョンはもう少し読みやすくなっています。これは、中括弧の間に置いたコードが、documentオブジェクトがそのreadyイベントを起動したときに実行されることを意味します。

これが何かを壊す唯一の本当の理由は、最初にを含めずにこのコードをページにjquery.js配置した場合、または間違った場所に配置した場合です。

于 2012-09-07T12:59:37.980 に答える
2

これは公式ドキュメントに記載されています:http://api.jquery.com/jQuery/#jQuery3

jQuery(callback)DOMの準備ができたときに実行する関数。

したがって、基本的に、コールバック関数は、DOMがロードされ、混乱する準備ができたときに呼び出されます。これを使用していなかった場合、特にHTMLツリーの最上位にあるスクリプトではノードが使用できない可能性があります。

于 2012-09-07T13:00:05.317 に答える
1

OK、無名関数について混乱していると思います。匿名関数-他の関数と同じように、名前がないだけです。これは通常、別の関数への引数として作成されます。

$('body').fadeIn('1000',function() {
    alert('yay!');
});

これは1回限りの使用を目的としています(したがって、関数名は使用しません)。

有効な引数として渡されていないため、機能していないと思われます。$私が疑うjQueryオブジェクトは、通常、無名関数ではなく、別のjQueryオブジェクトまたはパラメーターとしての文字列を必要とします(意味のあるものを返さない限り)。ただし、パラメータtobindは正常に作成されます。

さて、あなたがやりたかったかもしれないことは、自己呼び出し無名関数を作成することです。この場合、構文は次のようにもなります。

(function($) {
    $('a.change').bind('click',function(event){
        $('body').css('background','#27272')
    });
})(jQuery);

これにより、無名関数が作成され、実行されます(最後に引数が付いた括弧)。

[編集]

誤解を招くような情報を提供して申し訳ありません。明確にしておきます。使用した構文も有効です。jQueryオブジェクトは、DOMの読み込み後にそれに含まれる関数(コールバック)を実行するためです。したがって、これは実際には有効な構文です。

于 2012-09-07T13:03:31.713 に答える