我需要 试问 我的老问题,我可能不应该在凌晨 1 点问:P

使用 jquery 的属性选择器似乎找不到某些属性:

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

到目前为止,我似乎无法使用form的action属性和img的src属性。是否有一个不起作用的属性列表,以便我可以为它们编写自定义选择器?

再次感谢!


编辑: 似乎没有人相信某些选择器不能按预期工作。看这个例子:在 这个网站 (其中有 jquery 1.3 用于 firebugging)有一个如下所示的表单:

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

(它围绕“搜索当前下载”下拉列表)。如果你打开 firebug 并尝试这个选择器:

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

您将无法选择表格。action 属性没有什么特别的。该页面上徽标图像的 src 也是如此:

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

不起作用的选择器是:

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

当然,我可以进行通配符匹配,但这不是我所追求的。

有帮助吗?

解决方案

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

以下是对此的开放门票:

显然,这些错误之间的共同点是 jQuery 正在将您指定的选择器字符串与完整 URL 进行比较,而不是与 HTML 中定义的实际 action/src 属性进行比较。这解释了为什么 属性结尾为 或者 属性包含 选择器在这种情况下确实起作用。

我建议只给表单/图像一个类/ID 并完成它。

其他提示

这一切都取决于它的jQuery的版本你使用。

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

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

因此,也许将有助于@

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

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

,因为它会试图找到图像与Src的等于以 “dog.jpg”,不含有它。

如果您想要搜索只是定义了它的部分属性,我建议你阅读 jQuery的API选择器页。例如,要获得所有图像白衣SRC的包含 “dog.jpg”,你可以使用:

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

类似地,可以发现其属性开始或特定的值/串结束的元件。

scroll top