#javascript #jquery #css #function #html
Вопрос:
итак, у меня есть структура, похожая на два дива. В левой части div у меня есть список из 10 вопросов, а в правой части я хочу заполнить ответы на те же вопросы. При нажатии на вопрос1 слева ответ должен отображаться в правой части. При нажатии на второй вопрос должен отображаться ответ на второй, скрывающий все ответы. итак, каков был бы идеальный способ сделать это в jquery? Я написал что-то вроде;
$("document").ready(function() {
$("#idQ1").click(function() {
$("#ansQ1").css("display","block");
$("#ansQ1,#ansQ2,#ansQ3,#ansQ4,#ansQ5,.......#ansQ10").css("display","none");
})
})
но я не думаю, что этот код хорош. может ли кто-нибудь подсказать, как бы вы это сделали, используя циклы или функции
Комментарии:
1. что вы сделали до сих пор?? итак, ваш html и jquery на jsfiddle.net
Ответ №1:
Я бы добавил CSS classess .question
и .answer
к соответствующим элементам. Чем вы можете сделать что-то вроде:
$("document").ready(function() {
$(".question").click(function() {
var questionId = $(this).Id;
var answerId = "ans" questionId.substr(2);
$(".answer").hide();
$("#" answerId).show();
})
})
HTML,
вопросы,
<div id='idQ1' class='question'>question 1</div>
ответы
<div id='ansQ1' class='answer'>answer 1</div>
Ответ №2:
Другие ответы связаны с использованием классов для написания эффективного сценария для этого
Я создал здесь свой собственный пример, в котором используются теги привязки для вопросов с href
набором идентификатора элемента ответа.
пример здесь: http://jsfiddle.net/pxfunc/zEwUB/
HTML:
<div id="container">
<div id="questions">
<a href="#answer1">Question 1?</a>
<a href="#answer2">Question 2?</a>
<a href="#answer3">Question 3?</a>
</div>
<div id="answers">
<p id="defaultText">Click a question to show the answer here!</p>
<p id="answer1" class="answer">Answer 1!</p>
<p id="answer2" class="answer">Answer 2!</p>
<p id="answer3" class="answer">Answer 3!</p>
</div>
</div>
jQuery:
$('#questions a').click(function(e) {
e.preventDefault(); // prevents the link from changing the URL
$('#answers p').hide(); // hide all answers
$($(this).attr('href')).show(); // get href attribute to show answer
});
Ответ №3:
Используйте селектор классов вместо идентификатора
$("document").ready(function() {
$(" .Questions").click(function() {
$(" .answers").hide();
$('#' $(this).attr('id') 'answer').show();
})
})
HTML,
вопросы,
<div id='q1' class='question'>question 1</div>
ответы
<div id='q1answer' class='answer'>answer 1</div>
Ответ №4:
вы можете использовать classes
и выбирать их
$(".classname").css(...)
или, если вы хотите, вы можете использовать
$("[id^='ansQ']").css(...)
^=
это для начала.
http://api.jquery.com/attribute-starts-with-selector/