繁体   English   中英

jQuery属性选择器-我做错了吗?

[英]jQuery attribute selector - am I doing something wrong?

var selector = "ul.lower-menu li a[innerText=\"" + PanelSettings[tab_name_key] + "\"]";

我试图获取具有innerText属性设置为以前存储的值的水平菜单选项卡。

配置值的存储方式如下:

PanelSettings[tab_name_key] = $("ul.lower-menu li:first > a").prop("innerText");

它实际上在那里,并且始终具有适当的价值。

我没有从jQuery中得到任何信息-我在这里做错了什么吗?

编辑:我正在使用jQuery 1.6.4

是的,您做错了。 属性选择器选择具有特定属性集的元素。 innerText属性 ,而不是属性–实际上,您可以通过使用prop进行设置来识别。

您有两个选择。 一种是使用:contains选择器:

"ul.lower-menu li a:contains(" + PanelSettings[tab_name_key] + ")"

但是,如果您要求foo ,它将选择foobar 更好的选择是使用filter自己进行filter

var selector = "ul.lower-menu li a";
var els = $(selector).filter(function() {
    return $.text([this]) === PanelSettings[tab_name_key];
});

这仅选择文本内容与给定设置相同的元素。

注意,也正如Diodeus所说,您应该使用text()而不是prop('innerText')

您可能想尝试使用filter而不是属性选择器,在这种情况下,属性选择器会在恕我直言的边界上:

var selector = "ul.lower-menu li a";
var $links = $(selector).filter(function() {
                 return $(this).text() == PanelSettings[tab_name_key];
             });

代替:

.prop("innerText");

采用:

 .text()

也许您想使用:contains(text)jQuery选择器?

http://api.jquery.com/contains-selector/

好吧,它是一个属性选择器,而不是属性选择器。 您不能使用类似的选择器。 使用.filter()和function()变体

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM