2

質問がクリックされたときにスライドダウンおよびアップする回答を含む単純な FAQ ページを作成しようとしています。ユーザーがクラス「質問」のあるものをクリックすると、mytarget が '#' + [その質問の ID] + 'ans' になり、適切な回答がスライドダウンします。

toggleSlide 部分は、回答の ID を与えるだけで機能します。.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 には関数がなく、 で ID を取得し.attr('id')ます。
    idDOM 要素のプロパティです。これを使用できます:this.id

$('.question').click(function() {
    qid = this.id;
    mytarget = '#' + qid + 'ans';
    toggleSlide();
});​
于 2012-04-24T19:43:53.363 に答える
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 に答える
0

してはいけないこと: qid = $('this').id();

する:qid = $(this).attr('id'); 一重引用符なし

于 2012-04-24T19:44:16.280 に答える