php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.07.2010, 00:53   #1 (permalink)
Benutzer
 
Registriert seit: 01.12.2009
Beiträge: 71
PHP-Kenntnisse:
Anfänger
Dreamwatcher befindet sich auf einem aufstrebenden Ast
Standard jquery: dialogbox funktioniert nicht

Hallo,

ich wusste jetzt wirklich nicht wie ich das Thema nennen sollte

Ich wage mich zur Zeit an jquery ran und habe jetzt mal wieder ein weiteres Problem, bei dem ich nicht weiß, wie ich vorgehen muss.

Ich habe eine mainbox und eine nav_left, in die der neue inhalt bei klick auf einen Link geschrieben wird.

Jetzt möchte ich aber in einem neu geladenen Fenster eine Dialogbox benutzen, der Inhalt dieser wird in ein div namens dialogBox geladen und dann angezeigt.

Dieser Vorgang funktioniert aber auch nur, wenn man auf die Seite kommt ohne auf einen Link zu klicken, also nur wenn vorher kein Jquery benutzt wurde.

Wenn doch, wird der Link einfach geöffnet (ohne jquery, einfach normal geladen)

Wie kann ich nun dem Link mit der Klasse "ContentFadeIn"
nach dem Laden des neuen Inhalts die richtigen Eigenschaften geben?


Quellcode:
Code:
function click_event(href)
{
	$.ajax({
		type: "POST",
		dataType: "html",
		url: href,
		data: "ajax_req=1",
		success: function(html){
			$("#mainbox").html(html);
			$("#mainbox").html(html).find("a").click(function(){
				click_event($(this).attr("href"));
			});

		}
	});
	$.ajax({
		type: "POST",
		dataType: "html",
		url: href,
		data: "ajax_req=2",
		success: function(html){
			$("#nav_left").html(html);
			$("#nav_left").html(html).find("a").click(function(){
				click_event($(this).attr("href"));
			});
		}
	});		
	return false;
}
$(document).ready( function() { 
$("a").bind("click", function() { return false;  })
$("a").addClass("mainbox");
$("a.ContentFadeIn").removeClass("mainbox");
	$("#loading").ajaxStart(function(){
   		$(this).fadeTo(100, 1);
	});
	$(".mainbox").click(function () {
	href = $(this).attr("href"); 
	click_event(href);
	});	
	$("#loading").ajaxStop(function(){
		$(this).hide();
	});
	
	
		$("#dialogBox").dialog({ autoOpen: false, modal: true, draggable: false, resizable: false, maxWidth: 900 });
	$(".ContentFadeIn").click(function () {
		href = $(this).attr("href"); 
		$.ajax({
			type: "POST",
			dataType: "html",
			url: href,
			data: "ajax_req=1",
			success: function(html){
				$("#dialogBox").html(html);
				$("#dialogBox" ).dialog({ show: "slide" });
				$("#dialogBox" ).dialog({ closeOnEscape: true });
				$("#dialogBox").css("font-size", "10px");
				$("#dialogBox" ).dialog( "option", "width", 900 );
				$("#dialogBox" ).dialog( "option", "height", 700 );
				$("#dialogBox" ).dialog( "option", "position", "top" );
				$("#dialogBox").dialog("open");
			}
		});
	});
	
});
PS: Falls ich es mir irgendwo viel zu schwer mache, wäre es super wenn mich jemand drauf hinweisen könnte, weil man sich am Anfang meist schlechte Manieren angewöhnt, weil man es nicht besser kann.

Grüße,
Dreamwatcher
Dreamwatcher ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.07.2010, 15:58   #2 (permalink)
Moderator
 
Registriert seit: 28.03.2010
Beiträge: 1.966
PHP-Kenntnisse:
Fortgeschritten
ChrisB sorgt für eine eindrucksvolle AtmosphäreChrisB sorgt für eine eindrucksvolle AtmosphäreChrisB sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von Dreamwatcher Beitrag anzeigen
Dieser Vorgang funktioniert aber auch nur, wenn man auf die Seite kommt ohne auf einen Link zu klicken, also nur wenn vorher kein Jquery benutzt wurde.
Bitte drücke dich deutlicher aus - was geschieht denn, wenn jQuery „vorher benutzt“ wird, wofür benutzt du es ...?
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 20.07.2010, 20:40   #3 (permalink)
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 3.846
Chriz ist ein sehr geschätzer MenschChriz ist ein sehr geschätzer MenschChriz ist ein sehr geschätzer MenschChriz ist ein sehr geschätzer Mensch
Standard

Du musst nach dem Laden von Inhalt über AJAX dein "Binding" erneut ausführen. Im Moment machst du es ja nur, wenn das Dokument initial geladen wurde ($(document).ready()).
__________________

Chriz ist offline   Mit Zitat antworten
Alt 21.07.2010, 02:54   #4 (permalink)
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 1.222
rudygotya befindet sich auf einem aufstrebenden Ast
Standard

Oder live() und noch besser delegate() ansehen. Für das bissi html laden kannst du auch load() verwenden + callback angeben. Dann müsstest du die parameter an die url anhängen.
Unschön:
PHP-Code:
href = $(this).attr("href"); 
Die dialog options kannst du auch schöner und einfacher angeben:
PHP-Code:
$("#dialogBox" ).dialog({
    
option1true,
    
option2true,
//...
}); 
__________________
Kernelnotes:
Zitat:
Zitat von linux-2.6.6/drivers/net/wan/z85230.c
if(ct<0) ct=2; /* Shit happens.. */
rudygotya ist offline   Mit Zitat antworten
Alt 21.07.2010, 07:16   #5 (permalink)
Benutzer
 
Registriert seit: 01.12.2009
Beiträge: 71
PHP-Kenntnisse:
Anfänger
Dreamwatcher befindet sich auf einem aufstrebenden Ast
Standard

Wo müsste ich denn Live oder Delegate angeben?
Ich habe den Code bis jetzt so (dialogbox init geändert und href geändert):
Code:
function click_event(href)
{
	
	$.ajax({
		type: "POST",
		dataType: "html",
		url: href,
		data: "ajax_req=1",
		success: function(html){
			$("#mainbox").html(html);
			$("#mainbox").html(html).find("a").click(function(){
				click_event($(this).attr("href"));
			});

		}
	});
	$.ajax({
		type: "POST",
		dataType: "html",
		url: href,
		data: "ajax_req=2",
		success: function(html){
			$("#nav_left").html(html);
			$("#nav_left").html(html).find("a").click(function(){
				click_event($(this).attr("href"));
			});
		}
	});		
	return false;
}
$(document).ready( function() { 
$("a").bind("click", function() { return false;  })
$("a").addClass("mainbox");
$("a.ContentFadeIn").removeClass("mainbox");
	$("#loading").ajaxStart(function(){
   		$(this).fadeTo(100, 1);
	});
	$(".mainbox").click(function () {
	click_event($(this).attr("href"));
	});	
	$("#loading").ajaxStop(function(){
		$(this).hide();
	});
	$("#dialogBox").dialog({ 
			autoOpen: false, 
			modal: true, 
			draggable: false, 
			resizable: false, 
			maxWidth: 900,
			show: "slide",
			closeOnEscape: true,
			width: 900,
			height: 700,
			position: "top"
		});
	$("#dialogBox").css("font-size", "10px");
	$(".ContentFadeIn").click(function () {
		$.ajax({
			type: "POST",
			dataType: "html",
			url: $(this).attr("href"),
			data: "ajax_req=1",
			success: function(html){
				$("#dialogBox").html(html);
				$("#dialogBox").dialog("open");
			}
		});
	});
	
});
Wie muss ich das denn jetzt genau einbauen?
Dreamwatcher ist offline   Mit Zitat antworten
Alt 21.07.2010, 09:25   #6 (permalink)
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 1.222
rudygotya befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
function click_event(href)
{
    $(
"#mainbox").load(href "?ajax_req=1");
    $(
"#nav_left").load(href "?ajax_req=2");
    
// wieso return false? schau mal nach stopPropagation / cancelBubble
    
return false;
}
$(function() {
    $(
"a").not(".ContentFadeIn")
    
// das hier sollte nicht jquery machen, sondern dein html von vornherein liefern
        
.addClass("mainbox")
        .
click(function () {
            
click_event($(this).attr("href"));
    }); 
    $(
"#loading").ajaxStart(function(){
        $(
this).fadeTo(1001);
    });
    $(
"#loading").ajaxStop(function(){
        $(
this).hide();
    });
    $(
"#dialogBox").dialog({ 
            
autoOpenfalse
            
modaltrue
            
draggablefalse
            
resizablefalse
            
maxWidth900,
            
show"slide",
            
closeOnEscapetrue,
            
width900,
            
height700,
            
position"top"
        
});
    
// das hier per css erledigen
    
$("#dialogBox").css("font-size""10px");
    $(
".ContentFadeIn").click(function () {
        $(
"#dialogBox").load(href "?ajax_req=1",
            function () {
                $(
"#dialogBox").dialog("open");
            }
        )
    });
    
// bsp für delegate
    
$("#nav_left").delegate("a""click", function(){
        
click_event($(this).attr("href"));
    });
    
// bsp für live
    
$("#nav_left a").live("click", function(){
        
click_event($(this).attr("href"));
    });
}); 
__________________
Kernelnotes:
Zitat:
Zitat von linux-2.6.6/drivers/net/wan/z85230.c
if(ct<0) ct=2; /* Shit happens.. */
rudygotya ist offline   Mit Zitat antworten
Alt 21.07.2010, 09:32   #7 (permalink)
Erfahrener Benutzer
 
Registriert seit: 15.04.2010
Beiträge: 671
PHP-Kenntnisse:
Fortgeschritten
Paul.Schramenko befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Chriz Beitrag anzeigen
Du musst nach dem Laden von Inhalt über AJAX dein "Binding" erneut ausführen. Im Moment machst du es ja nur, wenn das Dokument initial geladen wurde ($(document).ready()).
Das würde mich jetzt auch interessieren, hab auch schon öfters dieses Problem gehabt, hab dann irgendwelche Workarounds gebastelt, bis es funktioniert hat. Gibts da irgendnen Befehl oder was das das ganze automatisiert wird?
__________________
"My software never has bugs, it just develops random features."
"Real programmers don't comment. If it was hard to write, it should be hard to understand!"
Paul.Schramenko ist offline   Mit Zitat antworten
Alt 21.07.2010, 09:34   #8 (permalink)
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 1.222
rudygotya befindet sich auf einem aufstrebenden Ast
Standard

Schau dir doch mal die 2 Beispiele von mir im code mit an. Ganz unten live und delegate. Wobei delegate performanter ist (dafür schwieriger zu benutzen)
__________________
Kernelnotes:
Zitat:
Zitat von linux-2.6.6/drivers/net/wan/z85230.c
if(ct<0) ct=2; /* Shit happens.. */
rudygotya ist offline   Mit Zitat antworten
Alt 21.07.2010, 10:14   #9 (permalink)
Erfahrener Benutzer
 
Registriert seit: 15.04.2010
Beiträge: 671
PHP-Kenntnisse:
Fortgeschritten
Paul.Schramenko befindet sich auf einem aufstrebenden Ast
Standard

Ja hab ich schon gesehn, aber eine Funktion die alles aufeinmal macht gibt es dann wohl nicht. Schade eigentlich.
__________________
"My software never has bugs, it just develops random features."
"Real programmers don't comment. If it was hard to write, it should be hard to understand!"
Paul.Schramenko ist offline   Mit Zitat antworten
Alt 21.07.2010, 13:35   #10 (permalink)
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 3.846
Chriz ist ein sehr geschätzer MenschChriz ist ein sehr geschätzer MenschChriz ist ein sehr geschätzer MenschChriz ist ein sehr geschätzer Mensch
Standard

$(document).bind("change", function() {}) vielleicht? Nein weiß es auch nicht. rudygotya ist ja unser jQuerykönig
__________________

Chriz ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
jQuery findet Element nicht ByStones JavaScript, Ajax und mehr 8 11.06.2010 14:03
Verschlüsselung funktioniert nicht richtig netmario PHP Einsteiger 2 19.05.2010 22:57
jQuery Plug scroll to - wie einbetten? mxxxx JavaScript, Ajax und mehr 5 24.04.2010 18:12
[Erledigt] [Erledigt] jQuery Endlos Scrolling Umlaute kn0wledge JavaScript, Ajax und mehr 0 18.10.2009 19:29
mod_rewrite mit slash/ohne slash funktioniert nur teilweise taurus Server, Hosting und Workstations 4 13.09.2009 12:57
jQuery mit AJAX ohne ActiceX im IE? krush JavaScript, Ajax und mehr 2 11.08.2009 08:54
[ERLEDIGT]PHP while-Schleife für Ausgabe funktioniert plötzlich nicht fuckinghot19 PHP Einsteiger 6 05.06.2009 22:28
[Erledigt] Umlaute ersetzen funktioniert nicht richtig BlackSpirit PHP Einsteiger 19 20.04.2009 12:04
[Erledigt] jQuery Dateien nachladen Phoscur JavaScript, Ajax und mehr 7 14.03.2009 13:44
jQuery Plugin - so richtig? stayInside JavaScript, Ajax und mehr 5 23.02.2009 12:34
For Schleife mit jQuery phpbeginner JavaScript, Ajax und mehr 3 22.11.2008 22:35
send button funktioniert nicht, finde fehler nicht selma123 PHP Tipps 2008 3 17.09.2008 11:57
PHP funktioniert nicht PHP Tipps 2005 20 28.04.2005 13:56
Php Gästebuch funktioniert nicht auf dem Server PHP Tipps 2005 13 21.04.2005 22:11
Dateien erstellen oder schreiben funktioniert nicht im Web PHP Tipps 2004-2 1 05.12.2004 19:39

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
$.get() .ajaxstart(), ajax load jquery dialog, jquery dialog option height, jquery dialog href problem, jquery im dialog link einbauen, dialogbox mit jquery, jquery dialog login php, jquery funktioniert nicht php, jquery css file als dialog box laden, jquery bei html nachladen live, for schleife in jquery einbauen, jquery.php dialog, jquery zwei dialog box, jquery dialog load, jquery hide dialog startup, jquery dialog ie, jquery dialog font size, jquery attr(href), dialog box jquery, jquery div-fenster einbauen

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:48 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum