1

我有下面的 jQuery 脚本

<script>
$(document).ready(function(){
    $('#bashing_title').change(function(){
        $(".selectInput").hide();
        $("#"this.value).show();
    });
});

</script>

假设选择下拉列表时显示表单字段。但它不是。我猜它可能是因为生成的 html 是

<option value="Title 1" value="1">Title 1</option>

但是,如果我将上面的 jquery 代码更改为此

<script>
$(document).ready(function(){
    $('#bashing_title').change(function(){
        $(".selectInput").hide();
        $("#1").show();
    });
});

</script>

有用。但我有大约 10 个不同的选项 ID。我如何解决它?

我希望我说得通

4

6 回答 6

2

改变

$("#"this.value).show();

$("#"+this.value).show();

并删除重复的value属性,即更改

<option value="Title 1" value="1">Title 1</option>

<option value="1">Title 1</option>
于 2013-05-07T17:53:53.373 回答
1

你应该写。

  $("#"+this.value).show();
于 2013-05-07T17:54:33.470 回答
1

将其更改为 $("#"+this.value).show();

于 2013-05-07T17:54:55.677 回答
1

是否可以像在 # 和 this.value 之间添加“+”一样简单

于 2013-05-07T17:56:14.110 回答
1

您需要正确连接字符串:

$("#" + this.value).show();

此外,您的 HTML 标记中存在错误,应该是这样的:

<option title="Title 1" value="1">Title 1</option>

而不是这个:

<option value="Title 1" value="1">Title 1</option>

在哪里,您有两个值,这在您的情况下会引起问题。

于 2013-05-07T17:57:16.033 回答
0

this不包含字符串但包含一个对象:元素本身。this没有一个属性叫value所以this.value不会工作。您必须访问this.options[this.selectedIndex].value通过 jQuery 或通过 jQuery选择的孩子$(this).val()。这应该是一个可行的解决方案:

$(document).ready(function(){
    $('#bashing_title').change(function(){
        $(".selectInput").hide();
        var element = $(this).val();
        $("#" + element).show();
    });
});
于 2013-05-07T18:01:19.807 回答