Использование кнопки для отображения определенных элементов

#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) , и вы должны иметь возможность его просмотреть.