0

私のマークアップでは<ul>、サムネイルを保持するためにこれを空にしています:..。

<ul class="slideSelectors">
</ul><!--   END ul="slideSelectors" -->

...そして私はjQueryを使用して.slidedivの束をループし、サムネイルを生成しています:..。

// GENERATE THE SLIDE SELECTORS [THUMBNAILS]
$('.slides .slide').each(function() {
    var ID = $(this).attr('id');
    var imgTag  = $(this).find('img').parent().html().split('meta"  -->')[1];
    var listItem = '<li><a href="#" title="'+ ID +'">'+imgTag+'</li>';
    //$('.slideSelectors').html(listItem); // loads only last list item, since .html() replaces all previous LIs
    //$('.slideSelectors').add(listItem); // NG in IE7, IE8
    $('.slideSelectors').append(listItem); // NG in IE7, IE8
});

...そしてこれがトリガービジネスです:

$('.slideSelectors').on('click', 'li a', function(){
    var selectorIx = parseInt($(this).closest('li').index(), 10);
    newSlide(selectorIx);
});

...これらはすべてFF、Safariで魅力的です。

ただし、IE7 / 8は.append()でバイブするようには見えません。サムネイル画像はレンダリングされます(クリック不可)が、<li>タグもアンカータグもないため、サムネイルはセレクターとして使用できなくなります。正しく見えるimgTag変数とlistItem変数の両方に警告しました(ただし、.slide divで正しいにもかかわらず、画像タグが不適切に閉じられています)。.prepend()と.html()を使用した同じ結果は、(関連する質問で提案されているように)良くありません。これは、.each()ループ内にあり、最後のサムネイルのみをレンダリングするためです。(私はまた、これが悪いHTMLに関連している可能性があることをSOの他の場所で読んだことがありますが、私のコードは有効です)

これは既知のバグのようですが、まだ修正されていません。別のトリガーセレクターを追加する以外は、私は考えがありません。誰かが私を解決策の方向に向けることができますか?

よろしくお願いします。

シェッキー

4

1 に答える 1

1

あなたのコードで

var listItem = '<li><a href="#" title="'+ ID +'">'+imgTag+'</li>';

する必要があります

var listItem = '<li><a href="#" title="'+ ID +'">'+imgTag+'</a></li>';

終了タグを見逃しました</a>。他のブラウザはよりスマートなIEので動作しますが、それを行うのIEはそれほどスマートではないため、サムネイル画像は でクリックできませんIE

于 2012-09-04T02:51:20.783 に答える