2

我正在尝试构建一个简单的常见问题解答页面,其中的答案在单击他们的问题时会向下和向上滑动。当用户单击带有“问题”类的内容时,我希望 mytarget 变为 '#' + [那个问题的 id] + 'ans',以便适当的答案向下滑动。

当我只给它一个答案的 ID 时,toggleSlide 部分就起作用了;我不确定我的 .click 函数是否错误,或者我对 $(this) 的使用是否错误,或者两者兼而有之。

$(document).ready(function() {
    var qid = '';
    var mytarget = '';

    function toggleSlide() {
        if ($(mytarget).css('display') == 'none') {
            $(mytarget).slideDown(600, 'swing');
        }

        else if ($(mytarget).css('display') == 'block') {
            $(mytarget).slideUp(600, 'swing');
        }
    };

    $('.answer').hide();
    $('.question').click(function() {
        qid = $('this').id();
        mytarget = '#' + qid + 'ans';
        toggleSlide();
    });
});​
4

4 回答 4

4

试试这个:

$(function() {  // shorthand for $(document).ready()...
    $('.answer').hide(); // preferably div.answer if they are all <div>s
    $('.question').click(function() {
        // no need to check what it currently is, use slideToggle
        $('#' + this.id + 'ans').slideToggle(600, 'swing');
    });
});
于 2012-04-24T19:48:08.433 回答
1

更改自:

$('this').id();

到:

$(this).attr('id')
  • this是 javascript 中的关键字,而不是字符串。
  • idjQuery中没有函数,您可以使用.attr('id').
    id是 DOM 元素的属性。所以你可以使用这个:this.id

$('.question').click(function() {
    qid = this.id;
    mytarget = '#' + qid + 'ans';
    toggleSlide();
});​
于 2012-04-24T19:43:53.363 回答
0

不要这样做: qid = $('this').id();

做:qid = $(this).attr('id'); 没有单引号

于 2012-04-24T19:44:16.280 回答
0
function toggleSlide(mytarget) {
  if ($(mytarget).css('display')=='none'){
      $(mytarget).slideDown(600, 'swing');}

  else if ($(mytarget).css('display')=='block'){
         $(mytarget).slideUp(600, 'swing');}
});

当您调用该函数时,您应该传递参数:

  qid = $(this).id();
  mytarget= '#' + qid + 'ans';
  toggleSlide(mytarget);
于 2012-04-24T19:48:40.687 回答