2012-05-17 2 views

答えて

5

このフィドル試しで追加することを制限することができます。Fiddle

最初の行の削除を隠す最初の部分については、ページロード時に次のものを呼び出しました:

$(".removeoutcome").hide(); 
その後

は、彼らが3以上のものを追加したり、私はあなたのclick方法で長さのチェックを追加した最後のものを削除することはできませんを確認するために、以下を参照してください

$('.addoutcome').live('click', function() { 
    if ($(".outcomegroup").length < 3) { 
     $('#template').clone().removeAttr('id').insertAfter($(this).closest('.outcomegroup')).find('.minus').show(); 
     renumber(); 
    } 
}); 

$('.removeoutcome').live('click', function() { 
    if ($(".outcomegroup").length > 1) { 
     $(this).closest('.outcomegroup').remove(); 
     renumber() 
    } 
}); 

また、サイドノートに、liveです廃止ので、あなたはjQueryの1.7を使用している場合、あなたは事前に1.7ならonにこれらのメソッドを変更したり、delegateを使用しています。誰もがこのラインに細心の注意を払っていない理由を私は知らない

0

更新日:http://jsfiddle.net/NzbRQ/5/

まず第一に、.liveを捨てます。 bodyよりも具体的なセレクタを追加するためにsectionを追加しましたが、元のDOMで使用できるより優れたものがあります。

単純なロジックで最後の行を削除しないでください。将来の "デル"リンクを表示するためのあなたのロジックは、実際にすでにそこにありました! "del"だけで十分ではないので、最後の行削除ロジックが本当に必要なわけではありませんが、私は徹底的に考えていました。

3

あなただけの最初の要素のためのデルを隠し、ここでは、次のコード

var count = 3; 
$('.minus').first().hide(); 
$('.addoutcome').live('click', function() { 
count--; 
    if(count < 0)return; 
    $('#template').clone().removeAttr('id').insertAfter($(this).closest('.outcomegroup')).find('.minus').show(); 

}); 

を使用して唯一の3以上のセットが作業フィドルhttp://jsfiddle.net/joycse06/uW9NQ/

+0

あなたのフィドルは、行の削除を考慮して必要があります。 – jwatts1980

+0

http://jsfiddle.net/NzbRQ/2/ –

+0

@jwattsは、デルがクリックされたときに?それは私のために削除された行を削除し、私のものではありません。:s –

0

:彼は間違いなく非隠れdel要素だった

.find('.minus').show(); 

.minus { display: none; } 

、それはそれだ、最初の要素はdelリンクが表示されませんし、他の人が意志:一言で言えば、あなたがする必要がある唯一のものは、適切なCSSルールを追加することです。

単に三つの要素には限界。

$("[parent element]").on('click', '.addoutcome', function() { 
    if($('.addoutcome').length > 2) return;  
    ... 
}); 

より良いセレクタ[parent selector]が必要です。レイアウトに完全に依存します。基本的には、これらすべての要素、それらのすべての親要素をラップ要素です。

+0

cssで初期の '.minus'を隠すためのUpvote。まだ提案している.live'のために下降してください。 –

+0

@ExplosionPills、そこに行きます。実際、私はあまり気にしなかった。 – Alexander

関連する問題