0

トリガーとなる画像がクリックされると、従来の選択/オプション フォーム要素を気の利いた小さなポップアップ ウィンドウに置き換えました。このページは会計目的のため、複数の項目が予想されます。新しい項目の選択/オプション要素を動的に生成する JavaScript を作成しました。ページが読み込まれると、選択肢の最初のセットが読み込まれ、ユーザーはそれらをクリックしていくつかの選択肢を含むポップアップを取得し、1 つを選択してからボックスを閉じることができます。次の選択肢への移動など。これらの動的要素のコードに livequery を追加しました。ただし... livequery("click"...) は、ユーザーがページのどこをクリックしても起動するようです。とてもイライラします。

ここで、jQuery 1.3 の "live()" がいかに優れているかを読みましたが、カスタム JS ファイルが 1.2 に依存しているため、jquery 1.3 に完全にアップグレードすることはできません。 livequery() プラグインを呼び出しましたが、それを正しく使用しているかどうかを本当に理解する必要があります。

部分的なコードを投稿します。全部載せるには量が多すぎます。

基本的に、「バブル」で始まり、その後に数字が続くdivを検索しています。次に、それぞれでイベントを実行します。バブル 1 のみが静的で、2 以上は動的です。livequery の使用法全体を見逃していますか?

>$jb('div[id^="bubble"]').each(function () {
> var divid = $jb('div[id^="bubble"]').filter(":first").attr("id");
>var pref = "bubble";
>var i = divid.substring((pref.length));
>var trigger = $jb('#trigger' + i, this);
>var popup = $jb('#pop'+ i, this).css('opacity', 0);
>var selectedoption = $jb('selectedOption' + i, this);
>var selectedtext = $jb('selectedOptionText' + i, this);
>$jb([trigger.get(0), popup.get(0)]).livequery("click",
> function () {
>//alert(i);
// code removed for brevity (just the contents of the popups)
>});
4

1 に答える 1