Javascript 在jQuery中使用多个val
对此可能有一个非常简单的解决方案,但我的jQuery技能还没有达到很高的水平。 我使用下面的显示和隐藏基于下拉列表中的值的div。我想对其进行调整,使“否”和“”都能起作用。 我怎样才能做到这一点 提前谢谢Javascript 在jQuery中使用多个val,javascript,jquery,Javascript,Jquery,对此可能有一个非常简单的解决方案,但我的jQuery技能还没有达到很高的水平。 我使用下面的显示和隐藏基于下拉列表中的值的div。我想对其进行调整,使“否”和“”都能起作用。 我怎样才能做到这一点 提前谢谢 $('#q1').change(function(){ if ($(this).val() == "No") { $('#divv').show(); } else { $('#divv').hide(); } }); 在这种情况下,可以使用JavaScript(|): $('
$('#q1').change(function(){
if ($(this).val() == "No") {
$('#divv').show();
} else {
$('#divv').hide();
}
});
在这种情况下,可以使用JavaScript(
|
):
$('#q1').change(function() {
value = this.value;
if (value == "No" || value == "") {
$('#divv').show();
} else {
$('#divv').hide();
}
}
);
实际上,最适合的解决方案是:if(value.toLowerCase()==“no”| | value==”){
无论在什么情况下,它都接受“no”
演示:
编辑:更新代码以满足Kolink和Bergi的要求使用javascript或运算符(
|
):
有很多方法。我个人会这样做:
if( this.value.match(/(No)?/i)) {
i
允许NO
、NO
和NO
也可以工作-如果您只想“NO”就将其删除。复制并粘贴此项,这样应该可以工作
$('#q1').change(function(){
if (($(this).val() == "No") || ($(this).val() == "")) {
$('#divv').show();
} else {
$('#divv').hide();
}
});
委员会应:
$('#q1').change(function(){
if (this.value == "No" || this.value == "") {
$('#divv').show();
} else {
$('#divv').hide();
}
});
我没有使用$(this)
(特别是不是两次)来创建jQuery对象,只是使用了。如果您想(使用a,来检查空字符串和):
您可以使用toggle()
,通过使用正则表达式检查值,将状态设置为显示或隐藏
$('#q1').on('change', function(){
$('#divv').toggle(this.value.match(/(no|^$)/i));
});
这是一个后来的关于这个问题的问题,非常感谢!如果这个答案解决了你的问题,请考虑把它标记为点击投票分数下面的复选标记。没有理由。我更喜欢使用<代码>匹配<代码>,因为它在PHP中类似于<代码> PrggMateS/<代码>。de>$(此)object两次。-特别是对于逻辑运算符,有更好的references@Kolink请仔细阅读:你实际上,也许是字面上,对每个答案都投了反对票,除了你自己的。@A.M.K我有理由对他们投反对票。这一次是因为对象效率低下,但我发现这一点已经得到了解决。现在我投反对票是因为对于
值==“null”
,我不知道它为什么在那里……我错误地认为,如果下拉项没有值,那么它将返回null,我测试并删除了它。由于创建了相同的$,效率低下(此)
object两次。@Kolink-请您进一步解释一下引用this
比引用变量效率更低的原因是什么?围绕this
创建一个完整的jQuery对象是低效的。@Kolink$(this)
对象现在只创建了一次,然后引用了两次:)现在您正在调用val()
在其上运行两次。
$('#q1').change(function(){
$('#divv')[ (this.value == "No" || !this.value) ? "show" : "hide" ]();
});
$('#q1').on('change', function(){
$('#divv').toggle(this.value.match(/(no|^$)/i));
});