6

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

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

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

到目前为止,我似乎无法使用表单的 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");

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

4

2 回答 2

11

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

以下是这方面的公开门票:

Apparently the common denominator between the bugs is that jQuery is comparing the selector string you specify against the full URL as opposed to the actual action/src attribute as it is defined in the HTML. This explains why the attributeEndsWith or the attributeContains selectors do work in this case.

I would recommend just giving the form/image a class/ID and getting it over with.

于 2009-04-13T17:04:44.153 回答
4

这完全取决于您使用的 jQuery 版本。

在 1.3 之前,您可以使用 @ 表示法:

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

所以也许添加@会有所帮助。

除此之外,您应该输入与标记中定义的完全相同的属性值- 例如,如果您尝试使用 查找图像src="http://example.com/dog.jpg",请不要这样做,因为它不起作用:

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

因为它将尝试查找 src等于“dog.jpg”的图像,而不包含它。

如果您想搜索仅定义部分属性的属性,我建议您阅读jQuery API 选择器页面。例如,要获取所有包含 “dog.jpg”的 src 图像,您可以使用:

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

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

于 2009-04-13T16:49:38.120 回答