2016-12-26 19 views
-4

ここで私はちょっとノブですが、私の用語が間違っていると思いますので、私を訂正してください(私は学ぶ必要があります)。jQuery select element id from String

FAQページでより良いユーザーエクスペリエンスを作り、その質問が役に立ちましたかどうかを尋ねます。オルタナティブを提供しない場合。私は質問を含むdivにクラスを追加しようとしています。ここで

はフィドル例です。ここでhttps://jsfiddle.net/u596vwwn/

はjQueryのは、次のとおりです。

$(document).ready(function() { 
    $('.faq-question').click(function() { 
     var question = $(this).attr('href'); 
     question = question.replace('#', ''); 
     var questionData = document.getElementById(question).innerHTML; 
     document.getElementById(question).innerHTML = questionData + '<div class="row further-help">Did this answer your question? <span id="further-help-yes">Yes</span> | <span id="further-help-no">No</span></div>'; 
    }); 

    $('body').on('click', '#further-help-yes', function() { 
     $(this).parent('.further-help').fadeOut(); 

    }); 

    $('body').on('click', '#further-help-no', function() { 
     $(this).parent('.further-help').html('Please contact us <a href="#">here</a>.'); 

    }); 
    }); 

私が欲しいもの、ユーザーはフィドル内のリンクをクリックしたとき。私はそれをスタイルすることができるようにdivのコンテナは、クラスが追加されます。

私はそうのような要素を取得しようとした。その後、

var questionContainer = document.getElementById(question); 

などのようにクラスを追加します。

questionContainer.addClass('selected-faq'); 

が、それはそれを追加していません。

+1

ヒント: 'jQuery'または' Vanilla Javascript'を使用してください。ここでそれらを混在させる必要はありません。 – melancia

+2

***未知のReferenceError:$は定義されていません***。常にコンソールを確認してください。 –

答えて

3

これは、questionContainerがjQuery要素ではなく、プレーンJS(getElementById)で選択されたためです。これを試してみてください:

var $questionContainer = $(question); 
$questionContainer.addClass('selected-faq'); 
+1

これは間違っています。問題は、フィドルにjqueryが含まれていないことでした。 –

+0

そうかもしれませんが、答えが間違っているとは限りません。 –

+0

@ TravisJ:Fabianが実際に質問に含まれていたコードに対処していることを考えれば、正しいと言えます。他のサイトに投稿された追加情報は、IMOとは関係ありません。 –

0

あなたはjQueryとプレーンなJavascriptを切り替えることで混乱しているようです。 jQueryを単純にしておくだけです。

$('.faq-question').click(function() { 
    var question = $($(this).attr('href')); 
    question.append('<div class="row further-help">Did this answer your question? <span id="further-help-yes">Yes</span> | <span id="further-help-no">No</span></div>'); 
    question.addClass('selected-faq'); 
});