Nick Rivers
Nick Rivers

Reputation: 294

jQuery :contains Selector if else statement

I have a results page that show users how they scored on a webform. I'm trying to display different messages based on their answer.

I've set up a basic alert to show what the user has selected.

var q1 = $('#webform-component-fieldset-1--question-1').text();
alert(q1);

if ($('#webform-component-fieldset-1--question-1:contains("A. Yes")')) {
    $('.results-wrapper').hide();
    $('.results').append('<div class="popup">User Selected A. Yes, for the first answer.</div>');
}
else if ($('#webform-component-fieldset-1--question-1:contains("B. No")')) {
    $('.results-wrapper').hide();
    $('.results').append('<div class="popup">User Selected B. No, for the first answer.</div>');
}
else if ($('#webform-component-fieldset-1--question-1:contains("C. I do not know")')) {
   $('.results-wrapper').hide();
   $('.results').append('<div class="popup">User Selected C. I do not know, for the first answer.</div>');  
}
else {
   alert('something went wrong');
}

http://jsfiddle.net/Hr6Lj/10/

Upvotes: 1

Views: 3236

Answers (2)

Jason Sperske
Jason Sperske

Reputation: 30416

This is how I would do it (using jQuery's data() funciton) (demo)

<div class="results">
    <div class="results-wrapper">
        <div class="form-item webform-component webform-component-display" id="webform-component-fieldset-1--question-1"
        data-answer="C">C. I do not know</div>
    </div>
</div>

<script>
  var updateAnswer = function (question) {
    var answer = question.data('answer');
    if (answer === 'A') {
      $('.results-wrapper').hide();
      $('.results').append('<div class="popup">User Selected A. Yes, for the first answer.</div>');
    } else if (answer === 'B') {
      $('.results-wrapper').hide();
      $('.results').append('<div class="popup">User Selected B. No, for the first answer.</div>');
    } else if (answer === 'C') {
      $('.results-wrapper').hide();
      $('.results').append('<div class="popup">User Selected C. I do not know, for the first answer.</div>');
    } else {
      alert('something went wrong');
    }
  }
  updateAnswer($('#webform-component-fieldset-1--question-1'));
</script>

Upvotes: 1

Kevin B
Kevin B

Reputation: 95027

The following will always be true because objects are always true.

if ($('#webform-component-fieldset-1--question-1:contains("A. Yes")'))

What you want is to know if any elements are selected.

if ($('#webform-component-fieldset-1--question-1:contains("A. Yes")').length)

Upvotes: 0

Related Questions