Jquery 如果($(";[id*=&x27;字符串&&x27;])显示()则单击()

Jquery 如果($(";[id*=&x27;字符串&&x27;])显示()则单击(),jquery,Jquery,如果单击的按钮包含特定的文本字符串,我试图显示一些元素,但我的代码只识别if。即使单击的按钮不包含字符串,它也不会显示“else”。我试图用答案和jQuery文档来解决这个问题,但是我没能得到结果。有人能支持我理解我的错误吗 $('.customizebtn')。单击(函数(){ 如果($(“[id*='boat']”){ 美元(“#额外的船”).show() }否则{ $(“#额外住宅”).show() } }); 船 住宅的 额外的船 发生这种情况是因为在if($(“[id*='boat

如果单击的按钮包含特定的文本字符串,我试图显示一些元素,但我的代码只识别if。即使单击的按钮不包含字符串,它也不会显示“else”。我试图用答案和jQuery文档来解决这个问题,但是我没能得到结果。有人能支持我理解我的错误吗

$('.customizebtn')。单击(函数(){
如果($(“[id*='boat']”){
美元(“#额外的船”).show()
}否则{
$(“#额外住宅”).show()
}
});

船
住宅的
额外的船

发生这种情况是因为在
if($(“[id*='boat']”)内部有一个jQuery对象,您只需检查该值是否真实,这总是正确的。即使使用
if($(“[id*='boat']”).length)
您仍然会得到相同的结果,因为在两个按钮上都单击该按钮,因此在这两种情况下,length都返回
1

要解决此问题,您需要检查单击按钮的
id
是否有文本
boat
或不类似:

this.id.indexOf('boat') > -1
现在,当您单击
BOAT
按钮时,
this.id
返回
a-BOAT
,而
this.id.indexOf('BOAT')
返回
2
,即>-1,因此它进入
if
语句中

现在,当您单击
RESIDENTIAL
按钮时,
this.id
返回
a-RESIDENTIAL
,而
this.id.indexOf('boat')
返回
-1
,该值等于-1,并计算为false,因此它现在进入
else
语句

$('.customizebtn')。单击(函数(){
console.clear();
console.log(this.id,this.id.indexOf('boat');
如果(此.id.indexOf('boat')>-1){
美元(“#额外的船”).show()
}否则{
$(“#额外住宅”).show()
}
});

船
住宅的
额外的船
额外住宿
如果($(“[id*='boat']”)。长度)
完美!现在我明白了。我问题的“语法”是错误的。