2012-05-17 11 views

Respuesta

5

Prueba este violín: Fiddle

Para la primera parte de ocultar la eliminación en la primera fila, llamé a lo siguiente en la carga de la página:

$(".removeoutcome").hide(); 

A continuación, para asegurarse de que no se puede añadir más de 3 o eliminar el último, he añadido comprobaciones de longitud en sus click métodos en:

$('.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() 
    } 
}); 

Además, en una nota al margen, es live obsoleta ahora, por lo que si está utilizando jQuery 1.7, cambie estos métodos a on o si es anterior a 1.7, use delegate.

0

Actualizado: http://jsfiddle.net/NzbRQ/5/

En primer lugar, una zanja de .live. Agregué el section para dar un selector más específico que body, pero probablemente haya algo mejor que puedas usar en tu DOM original.

Simplemente no elimine la última fila con una lógica simple. Su lógica para mostrar el futuro enlace "del" ya estaba allí. Ni siquiera necesitas realmente la lógica de eliminación de la última fila ya que simplemente no mostrar "del" es suficiente, pero solo estaba siendo minucioso.

3

Usted sólo puede ocultar la del primer elemento y limitarlo a agregar sólo 3 más juego usando el siguiente código

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(); 

}); 

aquí es el violín de trabajo http://jsfiddle.net/joycse06/uW9NQ/

+0

Su violín debe tener en cuenta la eliminación de filas. – jwatts1980

+0

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

+0

@jwatts ¿No es mi una eliminación de filas cuando se hace clic en?, Se está eliminando para mí.: s –

0

No sé por qué alguien no han prestado mucha atención a esta línea:

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

donde sin duda era un-ocultar el elemento del. En resumen, lo único que tiene que hacer es añadir la regla CSS adecuada:

.minus { display: none; } 

y eso es todo, el primer elemento no se mostrará un enlace del y los demás.

El límite de tres elementos simplemente.

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

Es necesaria una mejor selector de [parent selector] y depende totalmente de su diseño. Básicamente, es el elemento que envuelve a todos estos elementos, el elemento padre de todos ellos.

+0

Votación hacia arriba para ocultar el '.minus' inicial a través de css. Voto abajo para aún sugerencia '.live'. –

+0

@ExplosionPills, ahí lo tienes. En realidad, no me preocupé demasiado por eso. – Alexander

Cuestiones relacionadas