2016-03-14 2 views
-1

В html у меня есть 2 ссылки с разными идентификаторами. Когда я нажимаю на оба идентификатора, код вводит первое условие цикла «If». Любая идея, что не так?JQuery, переменная не выбирает правильное значение

Html:

<ul class="megamenu-list menuapp"> 
      <li class="title">Types</li> 
      <li><a href="app.html" id="sop">SOP</a></li> 
      <li><a href="app.html" id="tpc">TPC</a></li> 
    </ul> 

Мой JQuery скрипт:

$(document).ready(function(){ 
var $appload; 

    $(".menuapp li a").click(function(){ 
     $appload = $(this).attr('id'); 
     alert($appload); 
    }); 

    if($appload ="tpc"){ 
    alert("insop"); //in both cases the code enters this condition. 
    $("#dynamic").load("app/sop.html"); 
    } 
    else if ($appload ="sop"){ 
    alert($appload); 
    alert(" intpc"); 
    $("#dynamic").load("app/tpc.html"); 
    } 
}); 
+0

'=', '==' и '' === проблема. Измените 'if ($ appload =" tpc ") {' => 'if ($ appload ==" tpc ") {' – Tushar

+0

Если я добавлю «==», он никогда не переходит ни в одно из условий if, а предупреждения не отображаются. – Canute

+1

Это потому, что код 'if ... else' запускается только один раз при загрузке страницы. Переместите этот код внутри обработчика 'click'. – Tushar

ответ

2

== Используйте для проверки условий. = оператор присваивания

Используйте следующий код

if($appload == "tpc") 

же изменение мут применяется для

else if ($appload == "sop"){ 

Вы можете использовать this понять концепцию ==

Обновление

В соответствии с вашим кодом он никогда не переходит в любой из условий if.Это происходит потому, что код if-else запускается только один раз при загрузке страницы. Вы можете переместить эти условные операторы внутри события click.

Ваш код будет выглядеть как этот

$(document).ready(function() { 
    var $appload; 

    $(".menuapp li a").click(function() { 
    $appload = $(this).attr('id'); 
    alert($appload); 
    if ($appload == "tpc") { 
     alert("insop"); 
     $("#dynamic").load("app/sop.html"); 
    } else if ($appload == "sop") { 
     alert($appload); 
     alert(" intpc"); 
     $("#dynamic").load("app/tpc.html"); 
    } 
    }); 
}); 
+0

Если я добавлю «==», он никогда не переходит в одно из условий if, и предупреждения не отображаются. Не уверен, что происходит при загрузке страницы снова. – Canute

+0

@Canute проверить значение переменной до 'if'. –

+0

Да @Тушар Вы правы. Я скучаю по этому. –

0

Поместите свой , если заявление внутри функции и использовать event.preventDefault() для предотвращения запуска URL тега.

$(document).ready(function(){ 
    var $appload; 
    $(".menuapp li a").click(function(e){ 
     e.preventDefault(); 

     $appload = $(this).attr('id'); 
     if($appload == "tpc"){ 
     alert("insop"); //in both cases the code enters this condition. 
     $("#dynamic").load("app/sop.html"); 
     }else if ($appload == "sop"){ 
     alert(appload); 
     alert(" intpc"); 
     $("#dynamic").load("app/tpc.html"); 
     } 
    }); 
}); 
0
<ul class="megamenu-list menuapp"> 
    <li class="title">Types</li> 
    <li><a href="javascript:void(0)" id="sop">SOP</a></li> 
    <li><a href="javascript:void(0)" id="tpc">TPC</a></li> 
</ul> 
<script src="jquery-2.2.1.min.js"></script> 
<script> 



    $(document).ready(function() { 
     var $appload; 
     $(".menuapp li a").click(function() { 
      $appload = $(this).attr('id'); 
      if ($appload == "tpc") { 
       $("#dynamic").load("app/sop.html"); 
      } 
      else if ($appload == "sop") { 
       $("#dynamic").load("app/tpc.html"); 
      } 
     }); 
    }); 
</script> 
Смежные вопросы