1

わかりました、私はこれに少し苦労しています。私はまだJQueryを学んでいます。

ここに私が持っているものがあります:

スクリプト:

$('ul li.error').animate({
    height: 'toggle',
    opacity: 'toggle'
    }, {
    duration: 500,
    specialEasing: {
    width: 'linear',
    height: 'easeInOutCubic'
    },
    complete: function() {

    $(this).each(function(){

        $(this).delay(4000);

        $(this).animate({
            height: 'toggle',
            opacity: 'toggle'
        }, {
            duration: 7000,
            specialEasing: {
            width: 'linear',
            height: 'easeInOutCubic'
        },
        complete: function(){
            $(this).delay(1000);
                $(this).parent().next().find('li input').css('border-color', 'red');
                $('#somediv').slideDown();  
            }

        });

    });

    }
});

HTML:

<div>
   <ul>
 <li class="error">(Error Message if any)</li>
 <li class="label"><label></li>
 <li class="input"><input></li>

 <li class="error">(Error Message if any)</li>
 <li class="label"><label></li>
 <li class="input"><input></li>
   </ul>
</div>

私がやろうとしているのは、入力を持つ li 要素を選択し、境界線の色を変更することです。しかし、エラーメッセージがあった場所の境界線の色のみを変更したい.

これどうやってするの?助けていただければ幸いです、ありがとう!

4

1 に答える 1

1

これは私が作成したばかりの例ですが、このような要素を選択するのは良くありません。

$('.error').each(function(){
    var next = $(this).next();
    for( var i = 0; i < 5; i++ ) {
        if( next.hasClass('input') === false ) {
            next = next.next();
        } else {
            next.css('border', '1px solid red');
            break;
        }
    }
});

デモ: http://jsfiddle.net/2rdrr/

次の要素をループし、 5 回以内.errorに見つから.inputない場合はあきらめます。要素が見つかった場合は、境界線を追加し、ループを中断して、探し続けないようにします。

注: これはあまり巧妙ではありません。ページを管理しているのはあなたなので、要素を探すのではなく、要素がどこにあるかを知っておく必要があります。

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

<div>
   <ul>
      <li class="error">(Error Message if any)</li>
      <li class="label"><label></li>
      <li class="input"><input></li>
   </ul>
   <ul>
      <li class="error">(Error Message if any)</li>
      <li class="label"><label></li>
      <li class="input"><input></li>
   </ul>
</div>

次に、これを行うことができます。

$('.error').parent().find('.input').css('border', 'red');
于 2013-08-15T22:28:35.227 に答える