0
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>css demo</title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
    $(document).ready(function(){
        $('button').click(function(){
            //$(this).clone().appendTo('div');
            $(this).clone().prependTo('div');
        })

        $('button').bind('click', function(){
            $(this).clone().appendTo('div');
        })
    });
</script>
</head>
<body>
    <h1> My WebSite</h1>
    <div>
        <button data-file="day">Day</button>
        <button data-file="night">Night</button>
    </div>
</body>
</html>

コードを実行すると、要素が div タグに複製されるため、これら 2 つの違いはわかりません。bind メソッドの何が特別なのですか?

http://api.jquery.com/category/events/

私はドキュメントを見ていました。私が間違っている場合は修正してください...クリックとバインドが同じことを行う場合、同じことを達成するために2つの異なる方法があるのはなぜですか?.

4

3 に答える 3

2

あなたの例はまったく同じコードを実行しています -clickショートカットハンドラです。onは、 よりもイベントをアタッチする方法として推奨されていることに注意してくださいbind

on(および以前のバージョンでは)を使用する最も一般的な理由は、bindカスタム イベントを接続できるようにするためです。

$('.foo').trigger('someEvent.myPlugin');

// in another file, far far away
$('.foo').on('someEvent', function() {
    // deal with someEvent on foo
});

clickほとんどの場合、 , changeetc ユーティリティを使用できます。

于 2013-08-17T16:51:21.783 に答える
1

それらの間に違いはありません

jQuery は、共通イベントのハンドラーを登録するための など click()のユーティリティ関数をいくつか提供しています。change()bind()on()

于 2013-08-17T16:51:37.873 に答える
1

Bind は汎用の低レベル関数です。Click はショートカット メソッドであり、Bind の上位レベルの実装です。また、バインドは多かれ少なかれ非推奨です。「オン」バインディングを使用する必要があります。すなわち

$('selector'.on("click", function () {

});

"on" バインディングを使用する理由は、イベント委任を利用するオプションがあるためです。あなたもこれを行うことができるという点で

$('ul'.on("click", "li", function () {
   //do something whenever one of the list items is clicked
});    

これを行う理由の 1 つは、各リスト項目要素にイベントをバインドする必要がないことです。代わりに、1 つのイベントを親に添付できます。クリックを使用した場合、200 個のリスト アイテムがあるとします。

$('li'.on("click", function () {
   //thing to do on click
});

各要素には独自のリスナーがあり、非効率的です。しかし、ul ラッパーの親を対象とし、イベントがバブルアップするのをリッスンすることで、1 つの要素にアタッチするだけで済みます。その方が効率的です。インターネットでイベントの伝播またはイベントのバブリングを調べます。簡単な説明は、DOM でイベントが発生すると、そのイベントが親に伝搬されるということです。そのため、li をクリックすると、ul と body をラップする他の div と同様に、ul もイベントを受け取り、ウィンドウに至るまで受け取ります。

于 2013-08-17T16:53:01.530 に答える