2014-05-12 4 views
0

origine i avait une fonction de suppression comme ceci:

function ViewWorkflowDetail(btn, workflowId) { 

     $("#workflowDetailPanel").remove(); 

     if (document.getElementById("workflowDetailPanel") == null) { 
      // Do something usefull here 
     } 
} 

Ce qui a fonctionné à merveille. Pourtant, (dans l'esprit d'utiliser autant que possible JQuery) je l'ai changé:

function ViewWorkflowDetail(btn, workflowId) { 

     $("#workflowDetailPanel").remove(); 

     if ($("#workflowDetailPanel") == null) { 
      // Do something usefull here 
     } 
} 

Mais maintenant $("#workflowDetailPanel") est jamais plus nulle. . Si je le change à nouveau (à document.getElementById), alors il n'y a pas de problème plus Pourquoi la deuxième option continue à trouver que div Sont les JQuery objets en quelque sorte maintenu dans une sorte de cache

Remarque: Exactement même configuration/données ont été utilisées pour tester les deux cas.

+1

Si vous 'ai juste enlevé l'élément, pourquoi prendre la peine de vérifier à nouveau s'il est dans le document? – Pointy

+0

Vous pouvez essayer .isEmptyObject() et voir si cela fonctionne mieux ... –

+0

@Pointy Good Point! Probablement juste pour m'assurer. @ Dean Donnée erreur: "cette méthode n'est pas spécifiée par l'objet". – User999999

Répondre

7

Il ne sera jamais nulle, puisque retourne jQuery un tableau vide si l'élément n'existe pas, vous devez vérifier la longueur du tableau

if ($("#workflowDetailPanel").length > 0) { 
     // Do something usefull here 
    } 
+1

Sweet travaille avec brio! Je vais accepter dès que SO me le permettra! – User999999