2009-05-22 2 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

Учитывая, что JQuery * это * JavaScript, у меня возникают проблемы, не делая бойкий ответ и повторение вашего точного кода в качестве ответа. : P –

+0

Зачем вам это нужно? Какие функции jquery вам нужно использовать? Какова ваша цель? И Т.Д? – jrcs3

+3

@ Daniel: пока все jQuery - это Javascript, не все Javascript - jQuery. – tvanfosson

ответ

10

Предполагая, что я прав, если вы хотите отключить навигационные ссылки на странице, если пароль уже изменен (1 - это правда).

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

> Выбирает непосредственных детей ... Между тем getElementsByTagName выбирает потомки родительского узла. Кроме того, вы можете отключить установку с помощью функции .attr. Маленькие нитпики, просто подумал, что я поделюсь. –

+0

Кажется совершенным imo! –

+0

У вас есть, но отключен соответствующий атрибут в html? – TStamper

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

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

или немного 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

Спасибо, мне нравится ваш подход. – Shiva

+0

Итак, отметьте его как правильный ответ: P –

0

, предполагающих HasPasswordAlreadyChanged равно 0 или 1 (или flase/верно)

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

Кроме того, делает инвалидом атрибут элемента A влияет на него каким-либо образом?

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

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

Это выбирает все a теги, которые являются потомками узла с идентификатором sNav, устанавливает все их атрибуты инвалидов к истине, и устанавливает заданный возвращающегося ложную функцию, которая будет вызвана после события щелчка.

Последняя часть, вызов $() с указанной функцией, запускает функцию, когда DOM готов к работе, и является синонимом для $(document).ready() при передаче функции. Вы также можете заменить эту настройку window.onload, но вызов в $() более предпочтителен с помощью jQuery.

+0

Благодарим вас за решение и очень хорошее объяснение. Это действительно так! – Shiva

0

Как ваш JavaScript работает, вероятно, нет никакой ценности в преобразовании его в jQuery, рискуя ввести какие-либо ошибки.

Единственное, что я мог бы рассмотреть использует JQuery событие обработки, а не в явном виде с использованием window.onload:

function hasPasswordChanged() { 
    // unchanged 
} 

$(document).ready(function() { 
    hasPasswordChanged('<% = HasPasswordAlreadyChanged %>'); 
}); 
Смежные вопросы