Jquery多重选择器

Jquery multiple selector

本文关键字:选择器 Jquery      更新时间:2023-09-26

我试图选择一个输入框,但由于我可能有多个输入,我试图限制我选择的一个。这是我的jquery代码,它选择了输入,但由于某种原因,它不起作用。我做错了什么吗?这将在文档准备好后执行。

if ( $("input[name='RETURN.URL'][value='http://link.com?TYPE=P&PID=ST-L09F166&CONSTITUENCY=WBST']").length > 0 )
{
    alert("Transcript report");
}
else
{
    alert("Not Transcript Report");
}

这里是html

<input type="hidden" name="RETURN.URL" value="http://link.com?TYPE=P&amp;PID=ST-L09F166&amp;CONSTITUENCY=WBST">
<input type="hidden" name="SUBMIT_OPTIONS" value="">

您的选择器使用HTML转义的属性值:

[value='http://link.com?TYPE=P&amp;PID=ST-L09F166&amp;CONSTITUENCY=WBST']

选择器的实际值应使用&,而不是&amp;:

[value='http://link.com?TYPE=P&PID=ST-L09F166&CONSTITUENCY=WBST']

该值是HTML转义的,因此该值将在属性中正确表示,但查询选择器需要与实际值匹配。

您最好使用一个简单的选择器,比如类。这一点尤其重要,因为[value]属性中表示的URL可以按任何顺序具有查询字符串参数,并表示相同的资源。

HTML实体在浏览器中显示之前会被翻译,因此&amp;变成&,依此类推。因此,当您筛选选择器时,您正在寻找已转换为其他内容的内容。

这是JSFiddle。

在不详细说明为什么以这种方式选择输入元素的情况下,您只需要理解我所说的内容,并将选择器更改为:

$("input[name='RETURN.URL'][value='http://link.com?TYPE=P&PID=ST-L09F166&CONSTITUENCY=WBST']")

使用jQuery attr()方法

if($("input[value='http://link.com?TYPE=P&PID=ST-L09F166&CONSTITUENCY=WBST']").attr('name') == 'RETURN.URL'){
 alert("Transcript report");
}
else
{
    alert("Not Transcript Report");
}

除非另有说明,否则这些内容是动态添加的,最好给这个输入一个id,并通过它进行访问。

RETURN.URL中丢失点(这不是在输入元素中添加带点名称的首选方式)

&使用$('input[name=RETURNURL]').val().length

检查值,而不是将其用作选择器。

JSFiddle

if ( $("input[name='RETURN.URL']").val().length > 0 )
{
    alert("Transcript report");
}
else
{
    alert("Not Transcript Report");
}