2

是否可以通过循环来做到这一点,所以我不必为每个 div 编写点击函数?

$("#q1").click(function(){
        $("#ans1").slideToggle("fast");
    });

    $("#q2").click(function(){
        $("#ans2").slideToggle("fast");
    });

    $("#q3").click(function(){
        $("#ans3").slideToggle("fast");
    });

    $("#q4").click(function(){
        $("#ans4").slideToggle("fast");
    });

    $("#q5").click(function(){
        $("#ans5").slideToggle("fast");
    });

    $("#q6").click(function(){
        $("#ans6").slideToggle("fast");
    });

    $("#q7").click(function(){
        $("#ans7").slideToggle("fast");
    });

    $("#q8").click(function(){
        $("#ans8").slideToggle("fast");
    });

其中每个 id 的 num 与 click 函数内的 id num 相同,例如 #q8 有 ans#8,如果我添加另一个 id #q9,#ans9 我不必编写 click 函数?

每个 div 也有一个类...请告诉我当我点击问题时我该怎么做

<div id="q1" class="question"><span id="q">Q:&nbsp;</span><span id="ul">How Do I Choose a Web Designer?</span></div>
            <div class="answer" id="ans1">some text</div>
4

3 回答 3

3

可以做的是..将您的问题和答案放在一个块中..说...

<div class="qa-block">
    <div class="question">Q: How Do I Choose a Web Designer?</div>
    <div class="answer">some text</div>
</div>

然后将您的脚本更改为..

$('.question').on('click', function() {
    $(this).closest('.answer').slideToggle('fast');
});

这将概括您的解决方案并避免使用 ID

希望这可以帮助..

于 2013-06-05T09:47:08.893 回答
1

您可以使用一个功能执行此操作,如下所示。为问题 div 添加一个属性 data-answerid。它包含要显示的答案。您不必重复所有操作即可实现此功能。

HTML

<div class="question" data-answerid="ans1">
    <span id="q">Q:&nbsp;</span>
    <span id="ul">How Do I Choose a Web Designer?</span>
 </div>
 <div class="answer" id="ans1">some text</div>

<div class="question" data-answerid="ans2">
    <span id="q">Q:&nbsp;</span>
    <span id="ul">How Do I Choose a Web Designer?</span>
 </div>
 <div class="answer" id="ans2">some text</div>

JS

$(".question").click(function(){
    var answer = $(this).data('answerid');
    $("#"+answer).slideToggle("fast");
});

工作小提琴

于 2013-06-05T09:43:40.503 回答
0

我实际上会为所有问题 div 使用一个类,写如下:

$('.questionclass').click(function {
   var qnr = this.attr('id');  //gets div ids...
   var anr = qnr.replace(/[^0-9]/g, ''); //strips id of non-numeric characters
   $("#ans"+anr).slideToggle("fast"); //toggles the answer div
});

我有点困,所以可能会有一些错误,但它应该为你指明正确的方向。

于 2013-06-05T09:38:42.293 回答