IEで動作しないアンカーを追加するためにappend()を使用するjQuery(1.6.4)

私は実際にIEでappend()関数を使うのに問題があります。

私がしようとしていることは次のとおりです:

  1. Append anchor tag to the body element
  2. Bind a modalwindow plugin to the anchor tag
  3. Fire the click event on the anchor tag to open the modal window
  4. Remove the anchor tag afterwards

    if($('a#' + id).length == 0){
        $('body').append('<\a>');
    
        $('a#' + id).fancybox({
            'hideOnContentClick': false,
            width: width,
            height: height
        });
    }
    
    $('a#' + id).click();
    
    $('a#' + id).remove();
    

期待どおり、Chrome、FF、Operaでは正常に動作しますが、IEでは動作しません。

私がすでにこの問題を解決しようとしていること:

  1. Mess around with the apostrophs and quotations
  2. Simplify the anchor tag to minimum jQuery object. The h2 tag is, but it won't be shown on the page.

    I have found a workaround to hardcode the anchor tag and modify the attributes, but this is not really what I want. Any ideas are very much appreciated.

    Thank you in advance, Sebastian

0
idはどのように見えますか?
追加された 著者 epascarello,
DOMが読み込まれた後にリンクが追加された場合は、クリックイベントをまだ使用していないものにクリックイベントを添付することはできないため、をクリックすると機能しません。したがって、LIVEを使用して、clickイベントをバインドする必要があります。私はあなたのスクリプト/ htmlをより多くコピーできますので、問題を再現することができます。
追加された 著者 Marco Johannesen,
@espascarello:idはリテラル文字列です。
追加された 著者 Sebastian Roland,
@Marco Johannesen:私はlive()関数をチェックアウトして戻ってきます。ありがとう!
追加された 著者 Sebastian Roland,

1 答え

私はあなたのコードがこのように見えると期待しています:

var anchor = $('#' + id);
if(anchor.length === 0){
    anchor = $('<\a>'); 
    $('body').append( anchor );
    anchor.fancybox({
        'hideOnContentClick': false,
        width: width,
        height: height
    });
}
anchor.click().remove();

element#id のようなセレクタを使用すると、 #id を実行するよりもかなり遅くなります。プラスIEの特定のバージョンでは、それは問題があるようです。

また、 $( 'a#' + id)は高価で、複数回実行します。もう一度やり直す必要はありません。一度やり直して、変数や連鎖によって枯れてしまいます。

1
追加された
セレクタから a を削除する際に、上記のコードを変更してみましたか?
追加された 著者 epascarello,
もちろん、あなたは正しいですが、私はまだ設計段階です。最初は私はそれが動作するようにしたい;)しかし、とにかくありがとう。
追加された 著者 Sebastian Roland,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript