it-swarm.com.de

Wie überprüfe ich, ob ein Element mit einer ID in jQuery existiert oder nicht?

Ich generiere ein Div dynamisch und muss prüfen, ob ein dynamisch generiertes Div existiert oder nicht? Wie kann ich das machen?

Derzeit verwende ich die folgenden Funktionen, die das dynamisch generierte Div nicht erkennen. Es wird nur erkannt, ob bereits ein Element mit der ID in der HTML-Vorlage enthalten ist.

$(function() {
    var $mydiv = $("#liveGraph_id");
    if ($mydiv.length){
        alert("HHH");
    }
});

Wie kann ich das dynamisch erzeugte Div erkennen?

6

Wenn Mutationsbemerkungen aufgrund ihrer Browser-Kompatibilität keine Option sind , müssen Sie den Code involvieren, der den <div> tatsächlich in die document einfügt.

Eine Option ist die Verwendung eines benutzerdefinierten Ereignisses als pub/sub .

$(document).on('document_change', function () {
    if (document.getElementById('liveGraph_id')) {
        // do what you need here
    }
});
// without a snippet to go on, assuming `.load()` for an example
$('#container').load('/path/to/content', function () {
    $(this).trigger('document_change');
});
10

Wenn es dynamisch hinzugefügt wird, müssen Sie es erneut testen. Sagen wir, ein Klickereignis

$("#element").click(function()
{
    if($("#liveGraph_id").length)
        alert("HHH");
});
3

Wie fügst du dein dynamisch erzeugtes Div ein?

Es funktioniert, wenn Sie folgendermaßen vorgehen:

var div = document.createElement('div');
div.id = 'liveGraph_id';
div.innerHTML = "i'm dynamic";
document.getElementsByTagName('body')[0].appendChild(div);
if ($(div).length > 0) {
    alert('exists'); //will give alert
}
if ($('#liveGraph_id').length > 0) {
    alert('exists'); //will give alert
}
if ($('#liveGraph_id_extra').length > 0) {
    alert('exists'); //wont give alert because it doesn't exist.
}

jsfiddle .

0
Eez

ist so einfach 

   if(document.getElementById("idname")){
//div exists 

}

oder 

    if(!document.getElementById("idname")){
//  don't exists
}
0
user3510753

Nur aus Interesse können Sie auch eine Live-Sammlung verwenden (diese wird als Teil des DOM bereitgestellt). Sie können eine Sammlung aller Divs auf der Seite erstellen (dies kann im Kopf erfolgen, noch bevor der Körper geladen wird):

var allDivs = document.getElementsByTagName('div');

Jedes div mit einer ID ist als benannte Eigenschaft der Sammlung verfügbar. Sie können also Folgendes tun:

if (allDivs.someId) {
  // div with someId exists
}

Wenn die ID kein gültiger Bezeichner ist oder in einer Variablen gespeichert wird, verwenden Sie die Notation in eckigen Klammern. Einige Spielcodes:

<button onclick="
  alert(!!allDivs.newDiv);
">Check for div</button>
<button onclick="
  var div = document.createElement('div');
  div.id = 'newDiv';
  document.body.appendChild(div);
">Add div</button>

Klicken Sie auf die Schaltfläche Check for div und Sie erhalten false. Fügen Sie das div hinzu, indem Sie auf die Schaltfläche Add div klicken, und überprüfen Sie es erneut - Sie erhalten true.

0
RobG