Skip to content

Commit 2e3b854

Browse files
committed
fix(tap): get containing label of deeply nested element
The `tapContainingElement` method was not working correctly to climb up the DOM of a clicked element to potentially find an ancestor label element. Closes #1643
1 parent 3a3f7cf commit 2e3b854

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

Diff for: js/utils/tap.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -547,7 +547,7 @@ function tapContainingElement(ele, allowSelf) {
547547
for(var x=0; x<6; x++) {
548548
if(!climbEle) break;
549549
if(climbEle.tagName === 'LABEL') return climbEle;
550-
climbEle = ele.parentElement;
550+
climbEle = climbEle.parentElement;
551551
}
552552
if(allowSelf !== false) return ele;
553553
}

Diff for: test/unit/utils/tap.unit.js

+24
Original file line numberDiff line numberDiff line change
@@ -940,6 +940,30 @@ describe('Ionic Tap', function() {
940940
}
941941
});
942942

943+
it('Should get containing element of label when passed a deeply nested div', function() {
944+
var label = document.createElement('label');
945+
var div1 = document.createElement('div');
946+
var div2 = document.createElement('div');
947+
var div3 = document.createElement('div');
948+
var div4 = document.createElement('div');
949+
var div5 = document.createElement('div');
950+
var div6 = document.createElement('div');
951+
div6.id = 'div6';
952+
953+
label.appendChild(div1);
954+
div1.appendChild(div2);
955+
div2.appendChild(div3);
956+
div3.appendChild(div4);
957+
div4.appendChild(div5);
958+
div5.appendChild(div6);
959+
960+
// max depth
961+
expect( tapContainingElement(div5).tagName ).toEqual('LABEL');
962+
963+
// too deep
964+
expect( tapContainingElement(div6).id ).toEqual('div6');
965+
});
966+
943967
it('Should get containing element of label when passed a label', function() {
944968
var label = document.createElement('label');
945969
expect( tapContainingElement(label).tagName ).toEqual('LABEL');

0 commit comments

Comments
 (0)