#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()
Надеюсь, это поможет.