2009-04-13 140 views
6

我需要reask我的老问题发现,我可能不应该问它在凌晨1时:P属性不被jQuery的属性选择

似乎没有被使用jQuery的属性选择器发现了一些属性:

$("*[some=value]"); 

到目前为止,似乎我不能使用窗体的动作属性和img的src属性。有没有工作的属性列表的某处,所以我可以为它们编写自定义选择器?

再次感谢!


编辑: 似乎没有人相信,随着预期的一些选择不工作。请看下面的例子: 在this site(上它具有的jQuery 1.3 firebugging)有看起来像这样一种形式:

<form style="display: inline;" method="get" action="list"> 

(其围绕“搜索当前下载”下拉菜单)。如果您打开萤火虫并尝试使用此选择器:

$("form[action=list]"); 

您将无法选择表单。动作属性没有特别之处。这同样适用于徽标图像的网页上的SRC:

<img alt="Logo" src="/p/aost/logo?logo_id=1238551994"/> 

不工作的选择是:

$("img[src=/p/aost/logo?logo_id=1238551994"); 

当然,我可以做通配符匹配,这不是我是谁后。

+1

请不要*重新提出您的问题。只需编辑你的旧版本。如果你真的觉得这很有用,那就会碰到它。 – 2009-04-13 16:57:24

+1

我不知道 - 虐待在未来 – mkoryak 2009-04-13 17:04:38

+1

没关系,别担心。如果这个问题给你一个解决方案,你可能想编辑旧的问题链接到这个问题,然后要求人们投票结束旧问题。 – 2009-04-13 18:05:08

回答

11

没有不支持的属性的“列表”,因为不应该有;这是jQuery中的一个错误。

这里是开放式门票在此:

显然的错误之间的共同点是,jQuery是比较指定的选择字符串而不是实际的action/src属性,因为它是在HTML中定义的。这解释了为什么在这种情况下attributeEndsWithattributeContains选择器可以正常工作。

我会建议只给表单/图像一个类/ ID,并与它结束。

4

这一切都取决于您使用的是哪个jQuery版本。

之前1.3,你可以用@符号:

$("*[@name=value]") 

因此,也许将有助于@。

除此之外,您应该输入属性值,确切地说与其在标记中定义的相同 - 例如,如果你想找到src="http://example.com/dog.jpg"的图像,不这样做,因为它不会工作:

$("img[src=dog.jpg") 

,因为它会试图找到与SRC 等于为“dog.jpg”图像,不包含它。

如果你想要搜索仅定义它的一部分的属性,我建议阅读jQuery API Selectors页面。例如,要获得所有图像白衣SRC含“dog.jpg” ,你可以使用:

$("img[src*=dog.jpg]") 

同样,你可以找到其属性开始或特定的值/字符串结束元素。