0

私は、次のページに JavaScript スライダーを配置しています: crothersenvironmental.com/crothers/index.htmlは、関連する段落テキストを画面の横から送信し続けます。右下のスライダーの下に表示されます。スライダーの上にある関連する数字をクリックすると、数字が画面から消えて消えるまで、数字をクリックするたびにテキストが右に移動します。また、#1 をクリックすると、フッターが上に表示され、他の数字をクリックすると下に戻ります。

どんな助け、考え、または指示も非常に役に立ちます。よろしくお願いします。

私が使用しているjsスクリプトは次のとおりです。

$('#recentprojects li a').click(関数() {

var $this = $(this);

if ( !$this.parent('li').hasClass('selected') ) {

    var url = this.href,
        height = $('#recentworkimage img').css('height');

    $this
      .parents('ol')
      .find('li.selected')
        .removeClass('selected');

    $this.parent('li').addClass('selected');

    $('#recentworkimage')
      .css('height', height)
      .children('img')
        .fadeOut(1000, function() {
            $(this).attr('src', url).load(function() {
                $(this).fadeIn(1000);
            });

        $this.parents('#recentprojects')
          .find('p:last')
            .empty()
            .html('<p>' + $this.attr('title') + '</p>');
    });

}

return false;

});

4

2 に答える 2

0

問題はこれにあると思います:

$this.parents('#recentprojects')
      .find('p:last')
        .empty()
        .html('<p>' + $this.attr('title') + '</p>');

テキストを最後のpタグに追加すると、一種の再帰的な動作が発生します。新しいタグを追加するたびにp、それが最後のp.

これを行う別の方法は次のとおりです。

$this.parents('#recentprojects')
      .find('p:last')
        .remove()
        .html('<p>' + $this.attr('title') + '</p>');

remove メソッドは、古いものを削除し、新しいものに置き換える必要があります。

お役に立てれば

編集 -

実際には、あなたはただすることができます.find('p:last').html('yada yada yada');

于 2012-06-05T15:15:51.357 に答える
0

まず、新しい HTML 文字列を設定する前に要素を空にする必要はありません.html()。これは、コンテンツ全体が既に置き換えられているためです。サブタイトルがますます右に移動する理由は、<p>要素を再帰的に追加しているためです。

次のことを試してください。

$this.parents('#recentprojects')
    .find('p:last')
    .html($this.attr('title'));

この場合(一意の ID を検索するため)、次のように単純化できます。

$('#recentprojects')
    .find('p:last')
    .html($this.attr('title'));

または、これが<p>その要素内にある唯一の場合は、さらに削減できます。

$('#recentprojects p')
    .html($this.attr('title'));

ページの読み込み時に JavaScript でサブタイトルを更新する場合は、次を追加します。

$(document).ready(function () {
    var projects = $('#recentprojects');
    projects
        .find('p:last')
        .html(projects
            .find('a:first')
            .attr('title'));
});
于 2012-06-05T15:18:01.077 に答える