jQuery : 包含 Selector if else 语句

Posted

技术标签:

【中文标题】jQuery : 包含 Selector if else 语句【英文标题】:jQuery :contains Selector if else statement 【发布时间】:2013-03-09 23:12:28 【问题描述】:

我有一个结果页面,可以向用户展示他们在网络表单上的得分情况。我正在尝试根据他们的回答显示不同的消息。

我设置了一个基本警报来显示用户选择的内容。

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/

【问题讨论】:

那么问题/疑问是什么? 你为什么要这样使用选择器?难道你不能获取$('#webform-component-fieldset-1--question-1') 然后通过html() 测试它的内容吗? @JasonSperske 为什么要测试元素的字符串内容而不是仅仅测试元素是否存在?当他可以将.length 添加到他当前的代码中时,这似乎是一种更复杂的方式。 @KevinB,我想这感觉像是对我的 Sizzle 的过度使用,也许这是一个合理的使用,我已经发布了我的方法 @JasonSperske 它肯定需要更复杂,我可能会将它修复得更远,将答案保存在对象而不是 html 中。 【参考方案1】:

我就是这样做的(使用 jQuery 的 data() 函数)(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>

【讨论】:

使它(稍微)更通用【参考方案2】:

以下将永远为真,因为对象永远为真。

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

您想知道是否选择了任何元素。

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

【讨论】:

以上是关于jQuery : 包含 Selector if else 语句的主要内容,如果未能解决你的问题,请参考以下文章

用于“ctrl”的JavaScript或Jquery事件处理程序+更改

Jquery Selector无法在Polymer中找到div元素。应该是直截了当不理解问题

jQuery resizable()“包含”参数不接受数组

来自jQuery对象的jQuery Selector

百度前端技术学院2015JavaScript基础部分实现自己的小型jQuery

JQuery selector form input