判断多个节点自定义属性值是否一样
考虑到页面可能引入jquery,也加了判断。 封装了一个dataAttr函数,需要传入两个参数。 第一个参数:装有节点的数组或者伪数组,来判断这些数组的某个自定义属性值是否一致。 第二个参数:自定义属性。 返回值:true || false 。
上源码:
0 | <!DOCTYPE html> |
1 | <html lang="en"> |
2 | <head> |
3 | <meta charset="UTF-8"> |
4 | <title>Document</title> |
5 | </head> |
6 | <body> |
7 | <div data-xue="fh"></div> |
8 | <div data-xue="fh"></div> |
9 | <div data-xue="fh"></div> |
10 | <div data-xue="fh"></div> |
11 | <div data-xue="fh"></div> |
12 | <div data-xue="fh"></div> |
13 | <div data-xue="fh"></div> |
14 | <p data-xue="fh"></p> |
15 | <p data-xue="fh333"></p> |
16 | <p data-xue="fh"></p> |
17 | <span data-xue="fh"></span> |
18 | <script src="../test/node_modules/jquery/dist/jquery.js"></script> |
19 | <script> |
20 | var div = document.querySelector('div'); |
21 | var p = document.querySelector('p'); |
22 | var span = document.querySelector('span'); |
23 | function dataAttr(arr,attr){ |
24 | |
25 | var arrAttr = [], |
26 | flag = true; |
27 | |
28 | [].forEach.call(arr,function(v,i){ |
29 | if(window.jQuery && v instanceof jQuery){ |
30 | console.log('jquey对象'); |
31 | v = v[0]; |
32 | } |
33 | arrAttr.push(v.attributes[attr].nodeValue); |
34 | }); |
35 | |
36 | |
37 | arrAttr.forEach(function(v,i){ |
38 | if(arrAttr[0] != v){ |
39 | flag = false; |
40 | } |
41 | }) |
42 | |
43 | return flag; |
44 | } |
45 | console.log(dataAttr($('div'),"data-xue")); // true |
46 | console.log(dataAttr($('p'),"data-xue")); // false |
47 | console.log(dataAttr([div,p,span],"data-xue")); // true |
48 | |
49 | </script> |
50 | </body> |
51 | </html> |