Ich habe gerade angefangen, mit den Jquery Ui Tabs zu spielen. Der Inhalt der Tabs besteht zu Beginn hauptsächlich aus statischen Inhalten.jquery Tab - Open Link im aktuellen Panel funktioniert nicht
Jetzt haben einige der Inhalte innerhalb der Panels Links zu irgendeiner Art von Subcontent. Wenn der Benutzer auf einen Link im Panel klickt, möchte ich den Inhalt des aktuellen Panels durch den Inhalt des Links ersetzen.
Also habe ich das Skript direkt aus der jquery ui Registerkarte Dokumentation, aber ich kann es nicht zum laufen bringen. Es öffnet den Link immer direkt, nicht innerhalb des Panels. Der Code, den ich zum Testen verwenden ist ganz einfach:
<div id="MyTabs">
<ul>
<li><a href="#TestTab1">TestTab</a></li>
<li><a href="#TestTab2">TestTab</a></li>
</ul>
<div id="TestTab1">
Lorem ipsum dolor. dumm di dumm
<a href="http://mywebserver/somelink">Test</a>
</div>
<div id="TestTab2">
Lorem ipsum dolor. dumm di dumm 2
<a href="http://mywebserver/somelink2">Test 2</a>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
$('#MyTabs').tabs({
load: function(event, ui) {
$('a', ui.panel).click(function() {
$(ui.panel).load(this.href);
return false;
});
}
});
});
Außerdem, wenn ich den Inhalt des Panels habe eine AJAX-Aufruf keine Verbindung innerhalb der Platte auch immer geladen mit arbeitet.
Irgendeine Idee, was ich falsch mache?
Hilfe wirklich
Grüße
Maik
Edit1 geschätzt wird:
OK, habe ich ein bisschen weiter. Ich ersetzte den Javascript mit dem folgenden Ausschnitt:
$(function() {
$("#MyTabs").tabs();
$("#MyTabs").bind('tabsshow', function(event, ui) {
AddClickHandler(ui);
});
});
function AddClickHandler(ui) {
$('a', ui.panel).click(function() {
MyAlert("AddClickHandler");
$(ui.panel).load(this.href, AddClickHandler(ui));
return false;
});
}
Nach dieser Änderung alle Links auf einer Platte wird der Inhalt des aktuellen Panel aktualisieren. So weit, ist es gut. Noch ein Problem übrig. Ich kann es nicht für nachfolgende Links arbeiten. Ich habe versucht, es mit dem zweiten "AddClickHandler" für Rückruf zu tun, wenn der Ajax-Anruf beendet ist. Wenn eine andere Funktion mit einer einfachen Warnung angezeigt wird, wurde sie tatsächlich aufgerufen, wenn der Inhalt des Bedienfelds aktualisiert wurde. Aber ich kann nichts an die neuen Links in diesem Inhalt binden. Das "$ ('a', ui.panel) ..." funktioniert nicht. Was wäre der richtige Selektor dafür?
Irgendwelche Hinweise?
Grüße
Maik
Nur um sicherzugehen, müssen Sie die Datei jquery.js in Ihrem Skript enthalten? – Sev
Ja, die jquery-Dateien sind enthalten. Der Tab selbst funktioniert. Es öffnet lediglich Links im gesamten Fenster, nicht im aktuellen Panel. –
OK, ich denke ich bin weiter gekommen. Als ich die Docs für die jquery-Tabs erneut las, musste ich erkennen, dass sie an das Load-Ereignis gebunden sind, die nur dann aufgerufen werden, wenn der Inhalt der Registerkarte im laufenden Betrieb aufgerufen wird. Also wenn Sie einen Link in den li-Elementen verwenden, funktioniert es für die Links in den Registerkarten. ABER nur für den ersten Inhalt. Wenn der Inhalt eines Tabs ersetzt wurde und der neue Inhalt auch einen Link enthält, wie würde ich das Ereignis erneut an den Link binden? –