Scriptzugriffsproblem

cnet2k

Grünschnabel
Hallo miteinander!

Hab bei dem untenstehenden Source folgendes Problem:

Wenn die closedialog funktion aufgerufen wird und die nötige Zeile mit dem inhalt aus variable LINK ersetzt wird, dann funktioniert der das popup der class "hinterlegen" nicht mehr.

Hab ich hier einen Denkfehler? oben wird doch "$("a.hinterlegen")" initialisiert und weiter unten erkennt er das script nicht mehr?

Bitte um Hilfe und Erklärung wo hier mein Denkfehler liegt.

Danke

Code:
$("a.hinterlegen").click(function(e) {
			e.preventDefault();
			var $this = $(this);
			var horizontalPadding = 30;
			var verticalPadding = 30;
	        $('<iframe frameborder="0" id="externalSite" class="externalSite" src="' + this.href + '" />').dialog({
	            title: ($this.attr('title')) ? $this.attr('title') : 'zuteilen',
	            autoOpen: true,
	            width: 410,
	            height: 180,
	            modal: true,
	            resizable: true,
				autoResize: true,
	            overlay: {
	                opacity: 100.0,
	                background: "black"
	            }
	        }).width(800 - horizontalPadding).height(180 - verticalPadding);
		});

 function closeDialog(selector,kunde,listpart)
  {
  $(".externalSite").dialog('destroy');
    var link = "<center><a class='hinterlegen' href='./pages/aj_modul.php?act=add_kunde&vid="+kunde+"'><img src='./images/1278571318_okay.png' border='0' /></a></center>";
   $(listpart).replaceWith(link);
  }

-> kurze Anmerkung noch: mit dem Standardhtmlcode öffnet er die iframe perfekt im jquery popup.

Danke!
 
Event-Handler funktionieren nicht auf dynamisch erstellte Elemente.

Eine Möglichkeit ist den Event-Handler auf ein übergeordnetes Element zu binden und mit event.target zu arbeiten.
Eine andere Möglichkeit ist das "Rebinding" das folgerndermaßen funktioniert:

Javascript:
<div id="flip">asdf</div>

(function flipit(){
 
    $('#flip').click(function (){       
        var text = $(this).text();       
        if(text == "asdf")
            replacer = '<div id="flip">qwer</div>';
        else
            replacer = '<div id="flip">asdf</div>';
        
        $(this).replaceWith(replacer);
        
        flipit();
    });
    
})()

Die Funktion wird ein mal beim onload aufgerufen und jedes mal wenn der Event-Handler greift.
 

Neue Beiträge

Zurück