Проблема с извлечением динамического значения, установленного для элемента ввода в jquery

#jquery

#jquery

Вопрос:

Я установил значение скрытого элемента ввода динамически при нажатии на ссылку.

 <input id="flag" type="text" class="hidden"  /> 

$("#changed_link").click(function(){
            $('#flag').val(1);
});
  

Эта ссылка открывает окно лайтбокса. В лайтбоксе, одном из моих div, это #section1 скрыто. Изначально, когда я открываю лайтбокс (нажав на другую ссылку), этот div скрыт. Во второй раз, когда я щелкнул по второй ссылке, т.е. changed_link , я хочу, чтобы это #section1 было показано.

итак, я попытался установить значение флага при нажатии на ссылку и передать его в соответствующий js-файл. Но когда я пытаюсь извлечь значение этого скрытого ввода flag , оно не определено в файле js.

 var flag=$('#flag').val();
alert(flag); //undefined
  

Но если значение флага установлено изначально,

  <input id="flag" type="text" class="hidden" value='1' /> 
  

затем я получаю это значение в файле js. но тогда всегда отображается div section1 .

Как я могу получить динамически установленное значение в моем js-файле??

Комментарии:

1. что вы подразумеваете под передачей в другой js-файл

Ответ №1:

@Jade: Попробуй —

 var flag = $('#flag', top.document).val();
alert(flag);
  

Обновить

Вышеизложенное предполагает, что вы проверяете значение скрытого ввода из вашего лайтбокса. Однако, если вы выполняете проверку в родительском окне, инициализируйте скрытый ввод с помощью 0 :

 <input type="hidden" id="flag" value="0" />

<a href="#" id="changed_link1">Link 1</a> | 
<a href="#" id="changed_link2">Link 2</a> 
  

и соответствующим образом установите / проверьте значение скрытого ввода:

 $("#changed_link1").click(function(e) {
    e.preventDefault();
    $('#flag').val(1);
});

$("#changed_link2").click(function(e) {
    e.preventDefault(); 
    var flag = $('#flag').val(); 
    alert(flag); // 0 if first link wasn't used, 1 if it was
});
  

Ответ №2:

Вы пробовали:

 $(function(){
    var flag = $('#flag').val();
    alert(flag);
});
  

Комментарии:

1. Находятся ли файлы JS на одной странице и включены ли они в правильном порядке?

Ответ №3:

Иногда у меня возникает такая же проблема, и я меняю свой код для : $('#flag').attr('value');

В противном случае, если ваша цель — альтернативно показать / скрыть узел dom, вы можете использовать : $(...).toggle()

Надеюсь, это поможет.