2009-08-24 7 views
0
Évaluer

Je me demandais s'il est possible de convertir ce qui suit à une instruction IF en Javascript:dans Jquery

$('.Nav table tr:has(table.navheader) + tr:has(table.navitem)').addClass('linksbelow'); 

Exemple:

IF $('.Nav table tr:has(table.navheader) + tr:has(table.navitem)').addClass('linksbelow'); = **TRUE** (
$('.Nav table .navheader').addClass('linksbelow'); 
) 
**ELSE** (
$('.Nav table .navheader').addClass('Nolinksbelow'); 

Répondre

3

Vous pouvez approcher juste de cette façon:

$('.Nav table .navheader').addClass('Nolinksbelow'); 
$('.Nav table tr:has(table.navheader) + tr:has(table.navitem)').addClass('linksbelow').find('.navheader').addClass('linksbelow').removeClass('Nolinksbelow'); 

ici, je commence en supposant qu'aucun .navheader s ont des liens, puis allez appliquer la classe linksbelow comme vous le faisiez avant, puis (voici le bit important) find() les .navheader enfants appropriés et à corriger les en supprimant le (maintenant incorrect) Nolinksbelow classe et l'ajout de la classe correcte linksbelow.

0

Pas vraiment sûr de ce que vous demandez, il vous suffit la syntaxe pour if/else dans js? Try this

0

Vous savez que jquery est javascript ne sont-ils pas?

Implicitement la réponse à votre question est donc « oui », mais vous vous retrouvez avec un peu de javascript qui se sent étrangement similaire à une petite partie de jquery ...

+0

Oui Je suis conscient de cela, mais je ne sais pas comment réaliser. – CLiown

+0

Je suppose que ma question est quel est le gain? Vous n'êtes probablement pas autorisé à utiliser jquery? – annakata

+0

Non, je peux utiliser jquery, je ne sais pas comment? Si vous pouvez faire la lumière, je l'ai apprécié. Soit la réponse ci-dessus ne donne pas l'effet désiré. – CLiown

1

Voici ma conjecture de ce que vous pourriez souhaiter:

var q = $('.Nav table tr:has(table.navheader) + tr:has(table.navitem)'); 
if (q.length) { 
    q.addClass('linksbelow'); 
    $('.Nav table .navheader').addClass('linksbelow'); 
} else { 
    $('.Nav table .navheader').addClass('Nolinksbelow'); 
} 
0

Je ne suit pas la façon dont votre première ligne de code se rapporte au « Exemple ». Pourriez-vous décrire l'effet que vous essayez d'obtenir avec des mots?

Votre première ligne se lit comme suit:

(1) Ajouter la classe linksbelow à tous les tr éléments qui contiennent un table.navitem immédiatement après une tr qui contient un table.navheader dans les .Nav table

Et l'exemple lit:

(2) Ajouter une classe à n'importe quel elemen t qui correspond à .Nav table .navheader. Le nom de la classe dépend du résultat de (1). Si l'opération dans (1) réussit (probablement si elle correspond à des éléments), le nom de la classe doit être linksbelow, sinon Nolinksbelow.