Jquery无法匹配长字符串长度的html属性

时间:2014-09-02 05:21:22

标签: javascript jquery html5

最近我一直在使用128位AES加密来加密我的主键,导致诸如

之类的值

eyJpdiI6ImRyMXR5QllPVHM5OEJqdFM3azl2SGc9PSIsInZhbHVlIjoiXC82dVhLQ3pWYnd6QkZZdHZDZlRWSmc9PSIsIm1hYyI6IjgwNmVlMTI0Y2EzMWVmMGI1NTk1OWM5ZGNkYzA0ZWQwYzMwYjNhYzJmOTg2NjUzOTBjZjQ3MmE3YWUwYzY4ZDEifQ==

将值放在数据属性中(例如下面的示例)可以正常工作。

<a data-pk="eyJpdiI6ImRyMXR5QllPVHM5OEJqdFM3azl2SGc9PSIsInZhbHVlIjoiXC82dVhLQ3pWYnd6QkZZdHZDZlRWSmc9PSIsIm1hYyI6IjgwNmVlMTI0Y2EzMWVmMGI1NTk1OWM5ZGNkYzA0ZWQwYzMwYjNhYzJmOTg2NjUzOTBjZjQ3MmE3YWUwYzY4ZDEifQ=="></a>

但是,如果我尝试在Jquery中匹配data-pk属性,请参阅下文,将不会返回任何html元素

有什么想法吗?

$("a[data-pk='eyJpdiI6ImRyMXR5QllPVHM5OEJqdFM3azl2SGc9PSIsInZhbHVlIjoiXC82dVhLQ3pWYnd6QkZZdHZDZlRWSmc9PSIsIm1hYyI6IjgwNmVlMTI0Y2EzMWVmMGI1NTk1OWM5ZGNkYzA0ZWQwYzMwYjNhYzJmOTg2NjUzOTBjZjQ3MmE3YWUwYzY4ZDEifQ==']")

参见JSFiddle:http://jsfiddle.net/8fm1tqma/

W3C HTML5 draft中没有任何内容涉及data-属性的值长度限制。

2 个答案:

答案 0 :(得分:0)

更新您的代码,$("selector")[0]会返回dom元素(在这种情况下为HTML <a> Tag),dom没有名为{{1的属性这就是你得到的原因。 length
通过undefined方法从data-pk获取dom属性。

例如: -

dom.getAttribute("attribute-name")

这是小提琴http://jsfiddle.net/vikrant47/8fm1tqma/5/

或者只需使用$.data()

即可
alert($("a[data-pk='eyJpdiI6ImRyMXR5QllPVHM5OEJqdFM3azl2SGc9PSIsInZhbHVlIjoiXC82dVhLQ3pWYnd6QkZZdHZDZlRWSmc9PSIsIm1hYyI6IjgwNmVlMTI0Y2EzMWVmMGI1NTk1OWM5ZGNkYzA0ZWQwYzMwYjNhYzJmOTg2NjUzOTBjZjQ3MmE3YWUwYzY4ZDEifQ==']")[0].getAttribute("data-pk").length);//call getAttribute on dom which returns pk 

这是小提琴http://jsfiddle.net/vikrant47/8fm1tqma/2/

答案 1 :(得分:0)

您可以使用

获取特别匹配的data-pk值的文本
alert($("a[data-pk='eyJpdiI6ImRyMXR5QllPVHM5OEJqdFM3azl2SGc9PSIsInZhbHVlIjoiXC82dVhLQ3pWYnd6QkZZdHZDZlRWSmc9PSIsIm1hYyI6IjgwNmVlMTI0Y2EzMWVmMGI1NTk1OWM5ZGNkYzA0ZWQwYzMwYjNhYzJmOTg2NjUzOTBjZjQ3MmE3YWUwYzY4ZDEifQ==']").text());

你可以使用

找到pk的长度
alert($("a").data('pk').length);