2009-05-22 3 views
0
<script language="javascript" type="text/javascript"> 


function hasPasswordChanged(value) 
    { 
     if(value == '1') 
     { 
      var container = document.getElementById("sNav"); 
      if(document.getElementsByTagName) 
      { 
       var hyperLinkList = container.getElementsByTagName("a"); 

       for(var currentLink in hyperLinkList) 
       { 
        hyperLinkList[currentLink].disabled = true; 
        hyperLinkList[currentLink].onclick =function() { return false;} 

       } 

      } 
     } 
    } 


    window.onload = function() 
    { 
     hasPasswordChanged('<% = HasPasswordAlreadyChanged %>'); 
    } 

</script> 
+1

Étant donné que jQuery * est * JavaScript, je vais avoir du mal à ne pas faire la réponse glib et reposter votre code exact comme réponse. : P –

+0

Pourquoi avez-vous besoin de faire cela? Quelles fonctionnalités jquery avez-vous besoin d'utiliser? Quel est ton objectif? ETC? – jrcs3

+3

@Daniel: alors que tout jQuery est Javascript, tout Javascript n'est pas jQuery. – tvanfosson

Répondre

10

En supposant que j'ai raison de vouloir désactiver les liens de navigation sur la page si le mot de passe a déjà changé (1 est vrai).

$(function() { 
    var changed = <%= HasPasswordAlreadyChanged %>; 
    if (changed) { 
     $('#sNav a').attr('disabled','disabled') 
        .click(function() { return false; }); 
    } 
}); 
+0

> Sélectionne les enfants immédiats ... Pendant ce temps, getElementsByTagName sélectionne les descendants d'un nœud parent. En outre, vous pouvez désactiver en utilisant la fonction .attr. Petit nitpicks, juste pensé que je partagerais. –

+0

Semble parfait imo! –

+0

oui vous avez, mais est désactivé un attribut propre en html? – TStamper

1
function hasPasswordChanged(value) 
    { 
     if(value == '1') 
     { 
      $('#sNav a').attr('disabled', 'true').click(function(){ return false; }); 
     } 
    } 

$(function(){ 
    hasPasswordChanged('<% = HasPasswordAlreadyChanged %>'); 
}) 

ou un peu wierder:

$(function(){ 
    <% = HasPasswordAlreadyChanged %> == 1 ? $('#sNav a').attr('disabled', 'true').click(function(){ return false; }) : ""; 
}); 
1
<script language="javascript" type="text/javascript"> 
    $(function(){ 
    if ('<% = HasPasswordAlreadyChanged %>' == '1') { 
     $("#sNav").find("a").attr("disabled","disabled").click(function(){return false;}); 
    } 
    }); 
</script> 
+0

Merci j'aime votre approche. – Shiva

+0

Donc, marquez-le comme la bonne réponse: P –

0

présumant HasPasswordAlreadyChanged est 0 ou 1 (ou flase/true)

jQuery(function($){ 
    !!<%= HasPasswordAlreadyChanged %> && $("#sNav a").attr("disabled",true).click(function(){return false;}) 
}) 

Aussi, est-une personne handicapée attribut sur Un élément affecte-t-il de quelque façon que ce soit?

0
function hasPassWordChanged(value) { 
    if (value == '1') { 
    $("#sNav a").attr("disabled", true).click(function() {return false;}); 
    } 
} 

$(function() { 
    hasPasswordChanged('<% = HasPasswordAlreadyChanged %'); 
}); 

Ce sélectionne tous les a balises qui sont des enfants du nœud avec id sNav, définit tous leurs attributs handicapés à true, et fixe le retour spécifié fausse fonction à appeler lors de l'événement de clic.

La dernière partie, un appel à $() avec la fonction spécifiée, exécute la fonction lorsque le DOM est prêt à être travaillé, et est un synonyme de $(document).ready() lorsqu'il est passé une fonction. Vous pouvez également le remplacer par votre paramètre window.onload, mais l'appel à $() est plus préféré avec jQuery.

+0

Merci pour la solution avec une très belle explication. C'est vraiment gentil de votre part! – Shiva

0

Comme votre JavaScript fonctionne, il n'y a probablement aucune utilité à le convertir en jQuery au risque d'introduire des bogues.

La seule chose que je pourrais envisager est d'utiliser la gestion des événements de-jQuery plutôt que d'utiliser explicitement window.onload:

function hasPasswordChanged() { 
    // unchanged 
} 

$(document).ready(function() { 
    hasPasswordChanged('<% = HasPasswordAlreadyChanged %>'); 
}); 
Questions connexes