11548 sujets

JavaScript, DOM et API Web HTML5

Bonsoir,

Je souhaite sélectionner le body sauf un bloc j'ai donc fait ceci :


$('body').not($('.membre')).live('click', function(){
	if($(this).find('.membre').hasClass('open')){
		alert('test');
	}
});


Mais ça ne fonctionne pas, alors je me demande si c'est à cause de mon objet en général que ça ne fonctionne pas. Si vous pouviez me donner vos avis sur la façon de coder "objet" en JS par rapport à mon script Smiley smile

Voici le code complet :


jQuery(function($){
	
	var membre = {
		init: function() {
			this.show();
			this.close();
			this.hide();
		},
		show: function() {
			$('.login, .register').live('click', function(){
				var current = $(this);
				var notCurrent = $('.login, .register').not($(this));

				var cls = current.attr('class');
				var clsNotCurrent = notCurrent.attr('class');

				var divCurrent = current.parents().eq(2).find('#'+cls);
				var divNotCurrent = notCurrent.parents().eq(2).find('#'+clsNotCurrent);

				divNotCurrent.hide();
				divNotCurrent.removeClass('open');
				divCurrent.addClass('open');
				divCurrent.show();

				return false;
			});
		},
		close : function() {
			$('.close').live('click', function(){
				$(this).parents().eq(1).hide();
			});
		},
		hide: function(){
			$('body').not($('.membre')).live('click', function(){
				if($(this).find('.membre').hasClass('open')){
					alert('test');
				}
			});
		}
	}

	membre.init();

});


Merci d'avance.
Modifié par R-transat (30 Dec 2011 - 19:31)
Administrateur
Bonjour,


$('body').not($('.membre'))

sélectionne dans un premier temps l'élément body puis retire de tout ce qui précède les éléments ayant pour classe .membre
Si .membre est un enfant ou plus généralement un descendant de body, ça ne va rien retirer du tout et garder body.
Si body a pour classe .membre, ça retire le seul élément qui figurait dans ton objet jQuery ...

Attention .live() a été déprécié avec jQuery 1.7, il faut désormais se tourner vers .on() : http://api.jquery.com/live/