难以仅使用JQuery

时间:2015-11-26 04:43:57

标签: javascript jquery twitter-bootstrap

我正在使用Jquery和Bootstrap的组合。我试图只针对可见的面板。如果我摆脱代码的第一行,功能工作,但目标是我的HTML中的所有面板,我不想要。如果我保留第一行代码,则该函数根本不会执行。

$(".panel:visible").each(function(){

$("#1star").on("click", function() {
$(".5star").show();
$(".4star").show();
$(".3star").show();
$(".2star").show();
$(".1star").show();
});

是的,我确信有更简单的方法可以做到这一点,但我只局限于html,css和jQuery。

::: edit :: html required。

div class="panel panel-default pa 5star">
      <div class="panel-body">
      Pa hotel 5 star
      </div>
    </div>
    <div class="panel panel-default pa 4star">
      <div class="panel-body">
      pa hotel 4 star
      </div>
    </div>
    <div class="panel panel-default pa 3star">
      <div class="panel-body">
      pa hotel 3 star
      </div>
    </div>
      <div class="panel panel-default pa 2star">
      <div class="panel-body">
      pa hotel 2 star
      </div>
    </div>
    <div class="panel panel-default pa 1star">
      <div class="panel-body">
      pa hotel 1 star
      </div>
    </div>

::编辑2 ::: 隐藏所有面板的原因是因为1.它们默认为两个Jq

if (acceptNJ[stateSearch.toLowerCase()]) {
$(".nj").fadeIn(2000);
$(".pa").hide();
$(".ny").hide();

2 个答案:

答案 0 :(得分:0)

我们错过了一些HTML来全面了解。虽然您具有过滤功能,但您希望将面板显示为所选状态的最小星值或更高。

这是一个粗略的例子:https://jsfiddle.net/rfh62c45/

   // hide all panels 
   $('.panel').hide();

   var visibleState = $('#state :selected').text();
   var iStar = $('#star :selected').text();

   while (iStar <= 5) {
       $('.' + visibleState + '.' + iStar + 'star').fadeIn(2000); 
       iStar++;
   }

答案 1 :(得分:0)

您可以使用

获取可见性状态
$(".4star").is(":visible")

用jquery。返回true或false。 true =可见, false =隐藏

希望这有帮助。