0

ビューティーチップを使用してリストオプションのメニューを表示し、アクションをバインドするビューティチッププラグインを使用して、javascript ツールを作成しました。

メニュー項目を定義する単純な div から始めています

<div id="menu-div">
   <a href="javascript:;" id="link-one">text link one</a><br />
   <a href="javascript:;" id="link-two">text link two</a><br />
   <a href="javascript:;" id="link-three">text link three</a><br />
</div>

次に、次のコードを使用してビューティー ヒントをインスタンス化します。

    $("#menu-toggle").bt({
        contentSelector: "$('#menu-div').html()",
        preShow: function(box) {
        $("a[id^=link-]").click(function() {
           //do something
        });
    });

「preShow」関数を追加したのは、何らかの理由で、div が有効になるまで「link-」ID が見つからなかったからです.. (?)。これは、Firefox、Safari、および Chrome で完全に機能し、メニューの切り替えをクリックして、3 つのリンクを表示し、リンク 1 をクリックして、リンク 1 の正しいアクションを発生させることができました。

これは Internet Explorer でも問題なく機能しますが、初回のみです。2 回目 (クリックしてメニューを表示し、別のリンクをクリック) では、Internet Explorer は同じ ID を見つけることができないようです。

メニューを閉じた後、関数のバインドを解除する必要がありますか?

ビューティー ヒントが preShow 関数を処理する方法は次のとおりです。

// trigger preShow function
// function receives the box element (the balloon wrapper div) as an argument
opts.preShow.apply(this, [$box[0]]);
4

2 に答える 2

0

このコードには中括弧がないようです

$("#menu-toggle").bt({
    contentSelector: "$('#menu-div').html()",
    preShow: function(box) {
      $("a[id^=link-]").click(function() {
        //do something
      });
    } // this curly brace was missing
});
于 2011-04-15T20:46:35.483 に答える
0

提案してくれてありがとう - 質問に戻って、これを Internet Explorer で機能させるには、毎回イベント ハンドラーのバインドを解除する方法を見つける必要があることに気付いた後、解決したと思います。BeautyTips には、これに対して完全に機能する非表示後のコールバックがあるため、次のコードを適用しました。

postHide: function(box) { 
        $("a[id^=link-]").unbind();
    },

これは、すべてのブラウザーで期待どおりに機能しました。Internet Explorer でのイベント処理の動作がなぜこれほどまでに異なるのかを理解するための優れたリソースを知っている人はいますか?

于 2011-04-17T21:04:08.110 に答える