Bonjour,
ne sachant pas le terme exact pour mon problème je vais plutôt l'exposé.
Je construit un plugin jquery pour me permettre d'afficher et cacher une div (jusque la rien de compliqué).
Seulement suivant un paramètre spécifique je cherche à afficher une div mais dans un autre contener.
En gros voici une structure html :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
<ul id="topmenu" class="nav-horizontal">
<li class="l1"><a class="showit" href="http://www.google.be">mon lien classique</a></li>
<li class="l1"><a class="showit" href="#">mon lien 1</a>
		<div class="showcontent">
			<ul>
				<li><a href="#" title="test">test</a></li>
				<li><a href="#" title="test">test</a></li>
				<li><a href="#" title="test">test</a></li>
			</ul>
		</div>
	</li>
	<li class="l1"><a class="showit" href="#">mon lien 2</a>
		<div class="showcontent">
			<ul>
				<li><a href="#" title="test2">test2</a></li>
				<li><a href="#" title="test2">test2</a></li>
				<li><a href="#" title="test2">test2</a></li>
			</ul>
		</div>
	</li>
</ul>
<div id="show_global"></div>
Le contenu dans showcontent est cacher et je souhaite l'injecter dans la div show_global mais si je clique sur un autre élément showit alors que ma div est ouverte je souhaite charger directement son contenu sans pour autant devoir ré ouvrir la div.
Pour le moment c'est pas la joie:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
(function($){
	$.fn.showitmenu = function(options){
		defaults = {
			elem_container : '.showcontent',
			glob_container : null
		};
		opt = $.extend(true,{},defaults,options);
		//Hide (Collapse) the toggle containers on load
		var cont = $(this).next(opt.elem_container);
		cont.hide();
		$(this).each(function(i){
			var newid = $(this).attr("class")+"_" + i;
			this.id = newid;  
			var showitId = $(this).attr("id",newid);
			//console.log($(showitId));
		});
		if(opt.glob_container != null){
			$(this).live('click',function(){
				//e.preventDefault();
				var self = $(this);
				var selfid = $(this).attr('id');
				var answer = self.next(opt.elem_container).html();
				if ($(opt.glob_container).is(":visible")) {
					$(opt.glob_container).attr('rel',selfid);
					if($(opt.glob_container).attr("rel") !== self){
						$(opt.glob_container).slideUp('fast',function(){
			        		$(opt.glob_container).empty();
			        	});
					}else{
			        	$(opt.glob_container).fadeOut('fast',function(){
			        		$(opt.glob_container).append(answer);
			        	});
					}
 
		        } else {
		        	$(opt.glob_container).removeAttr("rel");
		        	$(opt.glob_container).append(answer);
		        	$(opt.glob_container).slideDown();
		        }
			});
		}else{
			//ouverture et fermeture par glissé
			$(this).live('click',function(){
				//e.preventDefault();
				var answer = $(this).next(opt.elem_container);
		        if (answer.is(":visible")) {
		           answer.slideUp();
		           answer.removeClass("showit_active");
		        } else {
		           answer.slideDown();
		           answer.addClass("showit_active"); 
		        }
			});
		}
	}
})(jQuery);
je me suis un peu embourbé à force de le retourner dans tous les sens MDR
Avec ce plugin je suis censé ouvrir la div suivant l'élément cliquer sauf dans le cas ou j'utilise un container global qui servira à afficher le contenu qui lui même restera cacher à cette endroit.
La partie qui utilise simplement le next (pas le container global) fonctionne très bien