JQuery - document(ready) wird zwei mal geworfen

Hm, ich habe versucht ein ähnliches Beispiel zu programmieren.

index.php
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
<html lang="de">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<title>Testscript</title>
		<meta name="description" content="Testscript.">
		<script src="js/jquery.js"></script>
		<script src="js/index.js"></script>
	</head>
	<body>
		<div class="menu">
		<span>Testmenu</span>
		</div>	
		<div class="content">
		</div>
	</body>
</html>

index.js
Code:
$(document).ready(function(){

	$('.menu span').click(function() {
		//laden des contents
		$.ajax({
			type: "GET",
			url: "content.php",
		       					
		    success: function(data){
				$('.content').html(data);
		    }
		});//ajax
	});
});

content.php
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
<html lang="de">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<title>Testscript</title>
		<meta name="description" content="Testscript.">
		<script src="js/content.js"></script>
	</head>
	<body>
		Dies ist der Inhalt! <span class="link">click</span>
	</body>
</html>

content.js
Code:
$(document).ready(function(){

	console.log('init');	

	$('.link').click(function() {
		alert("ja");		
	});
	
});

Wenn Du jetzt den JS-Code aus der content.js in die index.js schiebst, ****t es natürlich nicht mehr wenn Du auf "click" drückst, da zum Zeitpunkt des JS-Ladens die Klasse .link noch nicht kennst - da diese ja erst durch den $.ajax-Befehl kommt. Deswegen muss man in der index.js nun "on" benutzen:

Code:
	$('.content').on('click','.link', function() {
		alert("ja");		
	});

Dann geht es. Das ist das was ich vorhin erklären wollte. Man nimmt den JS-Code in die index.php und arbeitet mit .on(). Warum dies nun bei meinem Projekt nicht geht - weiß ich noch nicht. Evtl. ist es mittlerweile so komplex geworden, dass irgendetwas diesen Befehl blockiert...ich werde es wohl mit stopImmediate... erstmal belassen und mir evtl. später, wenn ich mehr Zeit habe nochmal in Ruhe im Detail auseinandernehmen....

Danke für deine Hilfe - falls Du noch Idee hast, immer her damit :D
 

Neue Beiträge

Zurück