jQuery nur bestimmte Elemente verändern

08/07/2013 15:05 Endecs#1
Hallo,

ich hab derzeit ein Template, was aber nicht ganz funktioniert wie es soll.
Wenn man bestimmten Menu Punkten "unclickable" gibt, sind die trotzdem clickable.

Somit bin ich dann gerade in der scripts.js und habe folgende Funktion:

Code:
jQuery( "li" ).each(function() {
			  if (jQuery(this).hasClass('unclickable') != null)
				  {
				  jQuery(this).find('a').attr("href", "#");
				  	//jQuery("a").attr("href", "#");
				  }
			});
und was ich noch probiert habe:

Code:
jQuery('li:has(.unclickable)').click(function(event) {
			event.preventDefault();
		})
nur leider sind die Seiten, die in den unclickable Seiten sind auch unclickable, also:

Autos (unclickable) -> Ford (unclickable) -> Mustang

Mustang soll nun clickable sein, ist es aber leider nicht, in "Mustang" ist kein "unclickable" als css Class definiert.

greets,
Endecs
08/07/2013 15:45 MrPuschel#2
PHP Code:
   jQuery('li.unclickable a').removeAttr('href'); 
Sollte reichen. Denk daran das jQuery Objekte in der Regel chainable sind. Die foreach ist also nicht nötig da removeAttr für jedes <a> das Kind eines <li> mit class="unclickable" ist ausgeführt wird.
08/07/2013 15:58 Endecs#3
Quote:
Originally Posted by MrPuschel View Post
PHP Code:
   jQuery('li.unclickable a').removeAttr('href'); 
Sollte reichen. Denk daran das jQuery Objekte in der Regel chainable sind. Die foreach ist also nicht nötig da removeAttr für jedes <a> das Kind eines <li> mit class="unclickable" ist ausgeführt wird.
Danke schon mal, nur funktioniert dieses auch nicht, wird auch von letzten Element das "href" gelöscht, obwohl dieses kein "unclickable" enthält.

greets,
Endecs
08/07/2013 16:10 MrPuschel#4
Das würde mich doch stark wundern. Poste mal dein html.
08/07/2013 16:18 Endecs#5
naja habs,

jQuery(".unclickable").each(function() {
var count_uls = jQuery(this).find('ul').length;
if(count_uls > 0) {
jQuery(this).find('a').first().attr('href', '#');
}
});

greets,
Ebdecs
08/07/2013 21:21 MrPuschel#6
Oder du benutzt den immediate children selector.

HTML Code:
   jQuery('li.unclickable > a').removeAttr('href');