Jquery多选择器

时间:2013-08-20 15:47:15

标签: javascript jquery jquery-selectors

我正在尝试选择一个输入框,但因为我可能有多个输入,我试图限制我选择的那个。这是我的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="">

5 个答案:

答案 0 :(得分:5)

您的选择器正在使用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可以按任何顺序包含其查询字符串参数,并表示相同的资源。

答案 1 :(得分:1)

使用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,并通过它进行访问。

答案 2 :(得分:1)

HTML实体在浏览器中显示之前已经过翻译,因此&amp;变为&等等。因此,当您过滤选择器时,您正在寻找已被翻译成其他东西的东西。

这是JSFiddle

如果不详细了解为什么要以这种方式选择输入元素,您只需要了解我所说的内容并将选择器更改为:

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

答案 3 :(得分:0)

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

JSFiddle

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

答案 4 :(得分:0)

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

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