组合元素ID

时间:2011-11-19 03:51:33

标签: javascript jquery

我正试图让两个标签出现,但不幸的是只有其中一个显示 #city_label

<script type="text/javascript">
$(document).ready(function() {
    function showDiv(element, pro2) {
        if (pro2.children("option:selected").val() == 2) element.show();
        else element.hide();
    }
    var myElement = $("div#pro2");
    var mypro2 = $("select#ptype");

    $("select").change(function() {
        showDiv(myElement, mypro2)
    });

   $("#ctry").change(function() {
      $(".state").hide();

      var stateSelect = $("#state_" + $(this).val());

      if (stateSelect.length === 0)
         $("#state_label" && "#city_label").hide();
      else {
         $("#state_label" && "#city_label").show();
         stateSelect.show();
      }       
   });     
});
</script>

HTML code:

<label id="state_label" style="display:none">State:</label><br />
<label id="city_label" style="display:none">Postal or City:</label>

2 个答案:

答案 0 :(得分:3)

那是......而不是&&如何运作。在这种情况下,它将返回其右操作数。你想要的是这个,在选择器中使用逗号:

<script type="text/javascript">
$(document).ready(function() {
    function showDiv(element, pro2) {
        if (pro2.children("option:selected").val() == 2) element.show();
        else element.hide();
    }
    var myElement = $("div#pro2");
    var mypro2 = $("select#ptype");

    $("select").change(function() {
        showDiv(myElement, mypro2)
    });

   $("#ctry").change(function() {
      $(".state").hide();

      var stateSelect = $("#state_" + $(this).val());

      if (stateSelect.length === 0)
         $("#state_label, #city_label").hide();
      else {
         $("#state_label, #city_label").show();
         stateSelect.show();
      }       
   });     
});
</script>

答案 1 :(得分:0)

您不能按照自己的方式使用&&运算符,一次选择多个元素,您应该将它们包含在以逗号分隔的单个字符串中;试试这个:

if (stateSelect.length === 0)
  $("#state_label,#city_label").hide();
else {
  $("#state_label,#city_label").show();
  stateSelect.show();
}