2010-12-18 10 views
0

Haben Sie einen Link, der die ID verwendet, um bestimmte Inhalte aus einer externen Datei (funktioniert, keine Probleme hier) zu greifen. Ich ändere dann die ID der Verbindung, so dass eine neue ID, so dass neue Informationen aus der externen Datei erhalten werden können, aber die gleichen Informationen immer angezeigt werden. Also suche ich nach Hilfe, um herauszufinden, warum die neue Information nicht geladen wird, sondern die alte.Änderung verliert Bind Referenz

Hier ist der Code zum Festlegen des neuen ID-Werts. Es befindet sich in einem vollständig separaten Abschnitt des Codes. Es ruft dann die Funktion fncSetupInfoWindow() auf und es erstellt die Bindungen. .windowInfo ist eine Klasse für bestimmte Elemente festgelegt.

$('#pickedCenterProgram a').text(newProgram[0]).parent().slideDown().attr('id', newVal).attr('title', newProgram); 
fncSetupInfoWindow(); 


function fncSetupInfoWindow() { 
$('.windowInfo').unbind('mouseover mouseout').each(function() { 
    var obj = $(this), position = [], contentID = globalObjects.emptyString, title = obj.attr('title'), contentID = obj.attr('id').toLowerCase(); 
    obj.bind({ 
     mouseover: function (e) { 
      position = fncGetPositionArray(e.pageX, e.pageY); 
      fncLoadStatusInfo(position[0], position[1], contentID, title); 
     }, 
     mouseout: function() { 
      $('#modInfoWindow').closeModal(); 
     } 
    }); 
}); 

}

Hier ist der Code für das Laden der Daten

function fncLoadStatusInfo(x, y, programName, title) { 
initLoader.className = 'txt-c'; //create loader 
initLoader.iconClass = 'alignVert-b'; 
$('#modInfoWindow').createModalWindow({ isModal: false, left: x, top: y, ignorePosition: false, title: title, width: 250, hideCloseIcon: true, autoOpen: true }).html(initLoader.createLoader()); 
$('#modInfoWindow').load('../pages/infoFile.htm ' + '#' + programName); 
return false; 

}

Alles funktioniert, auch fast, mit der Ausnahme, dass die neu zugewiesene ID nicht verwendet wird, sondern die Original für die Erstellung der Seite. Ich habe viele Dinge ausprobiert und sogar das modale (alias Dialog) Fenster mit den gleichen Ergebnissen zerstört.

danke ^.^

Danke.

+0

Könnten Sie Test zur Verfügung stellen Fall auf http://jsfiddle.net? –

Antwort

0

Das Problem ist, dass Sie die idzu der Zeit verwenden es (innerhalb der .each()) gebunden war, anstatt zum Zeitpunkt des Ereignisses (innerhalb der Event-Handler). Sie können es zum Zeitpunkt des Ereignis machen und die Dinge vereinfachen insgesamt wie folgt aus:

function fncSetupInfoWindow() { 
    $('.windowInfo').bind({ 
     mouseover: function (e) { 
      var pos = fncGetPositionArray(e.pageX, e.pageY); 
      fncLoadStatusInfo(pos[0], pos[1], this.id.toLowerCase(), this.title); 
     }, 
     mouseout: function() { 
      $('#modInfoWindow').closeModal(); 
     } 
    }); 
} 

Oder noch einfacher (wahrscheinlich, was Sie wollen) mit .hover():

function fncSetupInfoWindow() { 
    $('.windowInfo').hover(function (e) { 
    var pos = fncGetPositionArray(e.pageX, e.pageY); 
    fncLoadStatusInfo(pos[0], pos[1], this.id.toLowerCase(), this.title); 
    }, function() { 
    $('#modInfoWindow').closeModal(); 
    }); 
} 
+0

Die Verwendung des Hover ist eine viel bessere Option. Leider hat dies das Problem immer noch nicht gelöst. Das Gleiche passiert immer noch. –

+0

@ user546656 - Welche Probleme sehen Sie noch? –

+0

Es stellte sich heraus, dass die Lösung darin bestand, die neue ID an die Funktion zu übergeben, anstatt sie zu erfassen. Der Grund dafür war nur, dass die Funktion ausgeführt wurde, bevor die anderen Informationen vollständig ausgeführt wurden. –