2010-01-21 4 views
1

J'utilise trop jqueryjavascript jquery équivalent

Je veux le faire avec des jquery:

<a onclick="javascript:$(this).next().css('display', 'none')"> 

je pensais que c'était le suivant:

<a onclick="javascript:this.nextSibling.style.display = 'none'"> 

Mais ce ne est pas. Le style retourne indéfini.

Permettez-moi de préciser:

Je veux faire:

<a class="errorToggle">error</a> 
<div style="padding-left:20px;margin:0 0 10px 0;display:none;"> 

<h4>A PHP Error was encountered</h4> 

<p>Severity: <?php echo $severity; ?></p> 
<p>Message: <?php echo $message; ?></p> 
<p>Filename: <?php echo $filepath; ?></p> 
<p>Line Number: <?php echo $line; ?></p> 

</div> 

<script type="text/javascript"> 
    $(".errorToggle").click(function(){ 
    $(this).next().css("display", "block"); 
    }); 
</script> 

Sans jQuery parce que c'est un fichier de vue erreur CodeIgniter qui bien souvent charger avant mon en-tête ne, donc je ne avoir accès à jquery. Il n'a pas besoin d'être joli, ou bien codé, il suffit de travailler. Cela ne sera pas utilisé en production.

+0

mettez votre balisage –

+0

Que voulez-vous dire par "trop" jQuery? Si vous en utilisez un, ça vient pour le tour, donc vous pourriez aussi bien l'utiliser. En outre, si vous l'obtenez à partir d'un CDN, il est probablement déjà mis en cache dans les navigateurs de vos visiteurs, donc il n'y a pas trop de frais généraux. Si vous voulez dire que vous ne voulez pas l'utiliser du tout, je sympathise. Si seulement Netscape avait donné à Microsoft le code source (ou même seulement les spécifications) pour commencer, les pauvres dears n'auraient pas eu à essayer de le désosser pour le voler, et la compatibilité du navigateur serait bien meilleure. – Duncan

+2

jQuery ou pas de jQuery, vous ne voulez pas 'javascript:' au début de vos gestionnaires d'événements. – bobince

Répondre

5

Jetez un oeil à cet article:
JavaScript nextSibling and Cross Browser Compatibility

Extrait:

Le problème était que nous étions faisant référence à la 'nextSibling' d'un élément dans notre JS en utilisant l'événement onClick . Dans IE cela a bien fonctionné, mais dans Firefox, le 'nextSibling' pourrait être un saut de ligne.

Vous voudrez peut-être parcourir le "nextSibling()" jusqu'à ce que vous atteigniez ce que vous voulez.

+1

C'est pourquoi vous utilisez une bibliothèque comme jQuery - cross browser assuré même comportement. Ecrire une fois, fonctionne juste. – Erik

+0

C'est aussi pourquoi beaucoup d'entre nous sont paralysés sans ces bibliothèques et frameworks. Je suis l'un de ceux-là aussi. Hah –

+1

Notez également que c'est le comportement de Firefox qui est correct. – bobince

Questions connexes