jquery 属性选择器找不到属性

2022-01-13 00:00:00 css-selectors attributes jquery css

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

I need to reask my old question, I probably shouldnt have asked it at 1am :P

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

It seems that some attributes are not being found using jquery's attribute selector:

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

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

So far it seems that i cant use form's action attribute, and img's src attribute. Is there a list somewhere of attributes that do not work so i can write custom selectors for them?

再次感谢!

似乎没有人相信某些选择器不能按预期工作.看这个例子:在 this site (上面有 jquery 1.3 for firebugging)有一个看起来像这个:

No one seems to believe that some selectors do not work as expected. Look at this example: On this site (which has jquery 1.3 on it for firebugging) there is a form that looks like this:

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

(它围绕搜索当前下载"下拉菜单).如果您打开 firebug 并尝试使用此选择器:

(its around the 'search current downloads' dropdown). If you open firebug and try this selector:

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

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

you will NOT be able to select the form. There is nothing special about the action attribute. Same goes for the src of the logo image on that page:

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

不起作用的选择器是:

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

当然,我可以进行通配符匹配,这不是我想要的.

Sure, i can do wildcard matches, that is not what i am after.

推荐答案

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

There is no "list" of unsupported attributes because there shouldn't be; this is a bug in jQuery.

这里是公开的门票:

  • 无法使用action属性选择表单
  • attr "action" 的表单和 Selectors 的属性过滤器
  • 属性src"的选择器与 1.2.6 中的工作方式不同

显然,这些错误之间的共同点是 jQuery 将您指定的选择器字符串与完整的 URL 进行比较,而不是 HTML 中定义的实际 action/src 属性.这解释了为什么 attributeEndsWith 或 attributeContains 选择器在这种情况下确实有效.

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.

我建议只为表单/图像提供一个类/ID 并完成它.

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

相关文章