#jquery #parameters #show
#jquery #параметры #показать
Вопрос:
КОД ЗДЕСЬ: http://jsfiddle.net/B7Y43 /
Привет, друзья программисты,
У меня следующая ситуация:
Мой PHP-скрипт генерирует несколько DIV, содержащих:
- Вопрос (с классом, который является либо mainQuestion, либо subQuestionOf[QuestionID])
- Кнопка
- Абзац, содержащий ответ
Я пытаюсь добиться следующего:
Когда пользователь нажимает кнопку рядом с вопросом, ответ И подзапросы должны исчезнуть. Мне уже удалось отключить ответ, когда пользователь нажимает на кнопку, используя $(this).next('p').fadeIn("fast");
но поскольку подзапросы редко являются следующим разделом, я думаю, мне нужны параметры использования.
Итак, в псевдокоде:
<question id="1" subquestionOf=""><button>
<answer>
<question id="2" subquestionOf="1"><button>
<answer>
<question id="3" subquestionOf="1"><button>
<answer>
if user clicks button {
show answer;
show questions where subquestionof=parent.id;
}
Я понятия не имею, как использовать параметры, я пытался получить идентификатор родительского элемента кнопки, но безуспешно:
$(function getID(event){
var id = $(this).parent().attr("id");
alert(id);
});
Отображается предупреждение: «Не определено»
Комментарии:
1. Зачем определять функцию внутри обработчика загрузки документа? И больше ничего не делать?
Ответ №1:
Я пытался (модифицируя ваш код в jsFiddle):
$("input.showAnswerButton").click(function() {
$(this).next('p').fadeIn("fast"); //answer
//subquestions
$('.subQuestionOf' $(this).parent().attr("id")).fadeIn("fast");
});
и это работает…
Комментарии:
1. Это получилось проще, чем я думал, большое спасибо манджи 🙂 Могу ли я в любом случае назвать ID родительского DIV-файла, что-то другое, чем [ID], и при этом сохранить функциональность скрипта?
2. в вашем текущем html и этом решении идентификатор должен содержать индекс. Вы можете изменить его, но сохранить извлекаемый из него индекс. Вы также можете сохранить этот индекс в атрибуте ‘name’ и использовать
attr('name')
вместо него.
Ответ №2:
Попробуйте использовать event.target из объекта event, чтобы получить идентификатор нажатой кнопки.
Выполняете ли вы отладку с помощью Firebug для проверки значений $(this)
и результата .parent()
?
Комментарии:
1. Спасибо за ваш ответ. Я заменил $ (this) на $ (event.target) (это то, что вы имели в виду?). Но я все еще получаю undefined в качестве вывода моего браузера. Я не использую Firebug, я изучу это, большое спасибо. Я надеюсь, вы не получили десятки электронных писем от stackoverflow; у меня возникли проблемы с написанием этого комментария без случайной отправки его.
2. Привет, Майкл, я получил только одно уведомление 🙂 Код
$(event.target)
правильный (поскольку вы помещаете этот элемент DOM в обернутый набор jQuery). Вы можете перейти на вкладку Сценарий Firebug и поставить точку останова на строке, содержащей этот вызов (выбрав сценарий в выпадающем списке, который содержит их все, затем щелкнув слева от номера строки для этой строки), на вкладке просмотр с правой стороны вы можете добавить новое выражение просмотра$(event.object)
, и вы должны иметь возможность его просмотреть.