Wie löse ich doppelte Objekte auf einer dynamischen Ladeseite mit jQuery?
Ich möchte doppelte Objekte im dynamischen Ladeinhalt lösen. Bitte schauen Sie sich den folgenden Quellcode an, um das Verständnis zu erleichtern.
Basisseiten-HTML mit 1 dynamisch ladendem Inhalt
<body>
<div id="general-div"></div>>
<div id="div1"></div>
<div id="placeholder1">
Dynamic Content will be placed inside this.
<div class="inner-div"></div>
<div class="div1"></div>
</div>
</body>
Für Skripte im Header dieser Seite ist es sehr einfach, "general-div" -Objekte wie den folgenden Code auszuwählen.
$('#general-div')
Es ist ziemlich einfach, ein "inner-div" -Objekt in placeholder1 auszuwählen. So kann ich mit dem folgenden Code auswählen.
$('.inner-div')
Der obige Code könnte perfekt funktionieren. Ich kann den obigen Code jedoch nicht verwenden, wenn das gleiche Dokument mehr als ein doppelt vorhandenes Objekt enthält, wie im folgenden HTML-Code. Der obige Code gibt 2 Objekte zurück, die nicht meinen Wünschen entsprechen.
Basisseiten-HTML - Nach dem Laden wird ein weiterer dynamischer Inhalt geladen
<body>
<div id="general-div"></div>>
<div id="div1"></div>
<div id="placeholder1">
Dynamic Content will be placed inside this.
<div class="inner-div"></div>
<div class="div1"></div>
</div>
<div id="placeholder2">
Dynamic Content will be placed inside this.
<div class="inner-div"></div>
<div class="div1"></div>
</div>
</body>
Mögliche Lösung 1
Ich muss das angegebene jQuery-Objekt für jedes Skript in einem dynamischen Ladeinhalt wie dem folgenden Code erstellen.
// Deep copy for jQuery object.
var specfiedjQueryObj = $.extend(true, {}, jQuery);
// modify find function in jQuery object.
specfiedjQueryObj.fn.find = function(selector)
{
// by adding placeholder selector before eval result.
return new specfiedjQueryObj.fn.old_find('#placeholder1 ' + selector);
};
// So, I can select any object in dynamic loading content.
(function($)
{
// This result must be 1 object.
$('.div1');
})(temp);
Auch wenn diese Lösung großartig funktionieren sollte. Aber ich fand, dass jQuery ein sehr komplexes Objekt ist. Ich habe beim Versuch, es zu verwenden, viele Fehler gefunden.
Haben Sie eine Idee zur Lösung dieses Problems?
PS.Die PlaceHolder-ID ist keine feste ID. Es ist also unmöglich, dies in der Auswahlregel zu korrigieren. Darüber hinaus weiß ich nicht genau, wie viele Elemente und Positionen (zuerst, zuletzt oder in der Mitte) im Dokument vorhanden sind. Wegen des dynamischen Ladens wird der Inhalt auf vielen Seiten angezeigt.