1

特別な関数を介してページ上のすべてのリンクを処理したいとします。そのため、次のようにします。

$('a').bind("click", handleLinks);

しかし、別の方法で処理したいリンクを含むナビゲーションバーがあります。だから私はこれをやりたいのですが、うまくいきません:

$('#navbar a').unbind("click", handleLinks);

コンテンツは動的に読み込まれるため、最初のステートメントでナビゲーションバーを明確に除外したくないので、クリックを監視する必要のある要素はコンテンツによって異なります。基本的に、最初にバインドされた要素のより大きな初期サブセットから、要素の特定のサブセットを動的にバインド解除できるようにしたいです。

助言がありますか?

:: アップデート ::

私の心からの謝罪、あなたはすべて正しいです-コマンドが呼び出されていた順序に何かファンキーなものがありました。ごめん!

4

3 に答える 3

2

私はあなたが持っているものがうまくいくように見えるというapocalypse9に同意します。おそらく、別のアプローチの方が良い結果が得られるでしょう... live()で:notセレクターを使用するのはどうですか。Liveは、セレクターが動的に追加された要素で機能することを保証します。

$('a:not(#navbar a)').live("click", handleLinks);

http://docs.jquery.com/Selectors/not#selector

http://docs.jquery.com/Events/live

于 2009-08-08T03:32:13.250 に答える
0

奇妙な - それは正しいように見えます。最初のステートメントが、それが何をしていると思うかを選択していることをテストしましたか?

http://docs.jquery.com/Events/unbind

編集-わかりました、テストページを作成しました

<body>
        <a href="#" class="a">Test A</a>
        <a href="#" class="a">Test A</a>
        <a href="#" class="a">Test A</a>
        <a href="#" class="b">Test B</a>
        <a href="#" class="a">Test A</a>
        <a href="#" class="b">Test B</a>


        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
        <script type="text/javascript">

                $(function(){

                    $('a').bind("click", testClick);
                    $('a.b').unbind("click", testClick);


                });

                function testClick(){
                    alert("Link Clicked");
                };
    </script>
    </body>

これは問題なく動作しますが、関数をインラインで作成した場合は、select 要素からすべてのイベントをアンバインドして削除する必要がありました。それが当てはまるかどうかはわかりませんが、言及する価値があります。

もう少しコードを投稿してもよろしいですか > 何か他に問題があるようです。

于 2009-08-07T18:46:03.197 に答える
0
$('a').not('#navbar a').bind('click', handleLinks);
于 2009-08-09T17:42:29.473 に答える