Skip to content

Commit 998aee4

Browse files
getElementsByClass allows optionally searching for elements containing the class
1 parent 70ca8c5 commit 998aee4

File tree

5 files changed

+14
-14
lines changed

5 files changed

+14
-14
lines changed

changelog

Lines changed: 0 additions & 2 deletions
This file was deleted.

dom.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -821,11 +821,11 @@ Element.prototype = {
821821
return ls;
822822
});
823823
},
824-
getElementsByClassName : function(className){
824+
getElementsByClassName : function(className, exactMatch = true){
825825
return new LiveNodeList(this,function(base){
826826
var ls = [];
827827
_visitNode(base,function(node){
828-
if(node !== base && node.nodeType == ELEMENT_NODE && node.hasAttribute('class') && (node.getAttribute('class') == className)){
828+
if(node !== base && node.nodeType == ELEMENT_NODE && node.hasAttribute('class') && (exactMatch ? node.getAttribute('class') === className : node.getAttribute('class').replace(/\s+/g, ' ').trim().split(" ").includes(className))){
829829
ls.push(node);
830830
}
831831
});

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-native-html-parser",
3-
"version": "0.0.5",
3+
"version": "0.1.0",
44
"description": "can use html/xml parser in react-native/titanium/browser anywhere",
55
"keywords": [
66
"dom",
@@ -71,7 +71,7 @@
7171
}
7272
],
7373
"bugs": {
74-
"url": "http://github.com/g6ling/xmldom/issues",
74+
"url": "http://github.com/g6ling/react-native-html-parser/issues",
7575
"email": "g6lingpdev@gmail.com"
7676
},
7777
"licenses": [

readme.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ class TestReactNativeHtmlParser extends Component {
2424
componentDidMount() {
2525
let html = `<html>
2626
<body>
27-
<div id="b">
27+
<div id="b a">
2828
<a href="example.org">
2929
<div class="inA">
3030
<br>bbbb</br>
3131
</div>
3232
</div>
33-
<div class="bb">
33+
<div class="bb a">
3434
Test
3535
</div>
3636
</body>
@@ -39,7 +39,8 @@ class TestReactNativeHtmlParser extends Component {
3939

4040
console.log(doc.querySelect('#b .inA'))
4141
console.log(doc.getElementsByTagName('a'))
42-
console.log(doc.querySelect('#b a[href="example.org"]'))
42+
console.log(doc.querySelect('#b a[href="example.org"]'))
43+
console.log(doc.getElementsByClassName('a', false))
4344
}
4445

4546
}

test/test.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
1-
var DOMParser = require('react-native-html-parser').DOMParser;
1+
var DOMParser = require('../dom-parser').DOMParser;
22
var doc = new DOMParser().parseFromString(
33
'<html><body>'+
4-
'<div id="a" class="a">'+
4+
'<div id="a" class="ab">'+
55
'<a class="b">abcd</a>'+
66
'</div>'+
7-
'<div class="b">'+
7+
'<div class="b a andEvenMore">'+
88
'<a href="aa" id="b">'+
99
'</div>'+
1010
'</body></html>'
1111
,'text/html');
1212

13-
//console.log(doc.getElementsByAttribute('class', 'b'));
13+
// console.log(doc.getElementsByAttribute('class', 'b'));
14+
console.log(doc.getElementsByClassName('b', false))
1415
//console.log(doc.querySelect('.div.aa class#a a'))
1516
//console.log(doc.findSelector('div.aa#in[ii="a"]'))
1617
//console.log(doc.getElementsBySelector('a[href="aa"]#b'))
1718
//console.log(doc.getElementsBySelector('div.b'))
18-
console.log(doc.querySelect('div.a a.b'))
19+
// console.log(doc.querySelect('div.a a.b'))
1920
console.log('end')

0 commit comments

Comments
 (0)