0

我正在使用此代码:http: //jsfiddle.net/q3nUS/

$('#cf11_field_20').change(function() {
  $("#li-11-22")[$(this).val() == "full03_accommodation_hotel" ? 'show' : 'hide']("fast");
}).change();

$('#cf11_field_22').change(function() {
  $("#li-11-23")[$(this).val() == "full03_hotel_other" ? 'show' : 'hide']("fast");
}).change();

它工作正常,因此文本字段仅在以下情况下出现:在第一个下拉列表中选择“酒店”并且在第二个下拉列表中选择“其他”。

但是,一旦您将第一个下拉列表更改为“酒店”以外的内容,我显然需要隐藏其他两个字段。目前,文本字段仍然存在。

如何更改文本字段也被隐藏的代码?我知道如何在逻辑上做到这一点,但我遇到了语法问题。

我试过这样的事情:

    $('#cf11_field_20').change(function() {
      $("#li-11-22")[$(this).val() == "full03_accommodation_hotel" ? 'show' : 'hide']("fast");
      $("#li-11-23")[$(this).val() != "full03_accommodation_hotel" ? 'hide']("fast");
    }).change();  
    $('#cf11_field_22').change(function() {
      $("#li-11-23")[$(this).val() == "full03_hotel_other" ? 'show' : 'hide']("fast");
    }).change();

这里确实存在正确语法的问题。谢谢!

4

1 回答 1

1

使用condition ? value if true : value if falseafter 条件时,不能省略:,否则会出现语法错误(条件为 时会发生什么false?)。如果您不希望条件为假时发生任何事情,请改用if语句,如下所示(http://jsfiddle.net/q3nUS/2/):

if ($(this).val() != "full03_accommodation_hotel") $("#li-11-23").hide("fast");

希望这可以帮助。

于 2010-08-27T12:54:47.690 回答