teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2018/10/12 01:12

投稿

yambejp
yambejp

スコア117967

answer CHANGED
@@ -32,4 +32,51 @@
32
32
  background: #AAA;
33
33
  }
34
34
  </style>
35
+ ```
36
+
37
+ # 追記
38
+ 動的なオブジェクトに対応
39
+ ```javascript
40
+ <script>
41
+ document.addEventListener("click", function(e){
42
+ var t=e.target;
43
+ if(t.p('.box') && t.p('.box').p('#wrapper')){
44
+ alert('box clicked');
45
+ }
46
+ });
47
+
48
+ HTMLElement.prototype.p=function(selector){
49
+ var node=this;
50
+ do{
51
+ if ((node.matches || node.msMatchesSelector).call(node, selector)) {
52
+ return node;
53
+ }
54
+ } while ((node = node.parentNode).nodeName!="#document");
55
+ return null;
56
+ }
57
+ </script>
58
+ <div class="box">
59
+ <span>box out of wrapper</span>
60
+ </div>
61
+ <div id="wrapper">
62
+ <div class="box">
63
+ <span>box</span>
64
+ </div>
65
+ <div>
66
+ <span>not box</span>
67
+ </div>
68
+ <div class="box">
69
+ <span>box</span>
70
+ </div>
71
+ </div>
72
+
73
+ <style type="text/css">
74
+ .box {
75
+ background: #DDD;
76
+ }
77
+
78
+ .box span {
79
+ background: #AAA;
80
+ }
81
+ </style>
35
82
  ```