2011-10-31 20 views
7

Hice un botón muy simple controlador de eventos click, me gustaría tener <p> elemento se añadirá cuando el botón se hace clic, se puede comprobar my code here:Sobre jQuery append() y cómo comprobar si un elemento se ha añadido

<div id="wrapper"> 
    <input id="search_btn" value="Search" type="button"> 
</div> 
$("#search_btn").click(function(){ 
    $("#wrapper").append("<p id='other'>I am here</p>"); 
}); 

tengo dos preguntas a preguntar:

1, por qué mi .append() no funciona como esperaba (que es añadir el elemento <p>)

2. en jQuery, cómo comprobar si algún elemento que ya se anexa? Por ejemplo, ¿cómo comprobar si el <p id="other"> ya se ha anexado en mi caso?

-------------------- actualización ------------------------ -------------------

Por favor, consulte my updated code here.

Por lo tanto, sólo la segunda pregunta sigue siendo ...

+2

jsfiddle está predeterminado para cargar MooTools. A menudo me olvido de cambiarlo también. –

+0

Las etiquetas de cierre automático no manejan la función de agregar. Aunque puede hacerlo con .next() –

Respuesta

22
  1. Está utilizando mootools y no jQuery.

  2. para comprobar si existe el elemento de

if($('#other').length > 0)

Así que si usted no desea añadir el elemento dos veces:

$("#search_btn").click(function() { 
    if($('#other').length == 0) { 
     $("#wrapper").append("<p id='other'>I am here</p>"); 
    } 
}); 

O bien, puede utilizar la .one(function) [ doc]:

$("#search_btn").one('click', function() { 
    $("#wrapper").append("<p id='other'>I am here</p>"); 
}); 
4

1) cargas jsFiddle en MooTools por defecto, es necesario incluir jQuery para que esto funcione. No hay una razón en el mundo por la que ese ejemplo no funcione. (Suponiendo que el $ está ocupadas con el objeto jQuery, que es.)

2) Puede comprobar el nextSibling de un DOMElement, o utilizar el método jQuery next(), así:

if(!$('#something').next().length) { 
    //no next sibling. 
} 
+0

Aclaración en 1: el violín no está cargando la biblioteca jQuery, pero sí el mootools. Este funciona: http://jsfiddle.net/j36ye/16/ – Lekensteyn

1

Su violín está utilizando el marco de herramientas moo. Cámbielo para usar el marco de jquery a la izquierda y funciona.Ver http://jsfiddle.net/KxGsj/

2

http://jsfiddle.net/j36ye/17/

$("#search_btn").click(function(){ 
    if(($('#other').length) == 0) { 
     $("#wrapper").append("<p id='other'>I am here</p>"); 
    } 
    return false 
}); 

O

var other_appended = false; 

$("#search_btn").click(function(){ 
    if(other_appended == false) { 
     $("#wrapper").append("<p id='other'>I am here</p>"); 
      other_appended = true; 
    } 
    return false; 
}); 
2

¿Cómo comprobar si existe un elemento:

if($("p#other").length > 0) { 
    // a p element with id "other" exists 
} 
else { 
    // a p element with id "other" does not exist 
} 
1

cheque si el elemento ya se anexa:

alert($(this).parent().length?'appended':'not appended'); 
Cuestiones relacionadas