33
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【jQuery】ラベルで囲まれたチェックボックスでclickイベントが2回実行される

Last updated at Posted at 2015-03-12

##事象

以下のソースで、チェックボックスもしくはラベルをクリックしたときにclickイベントが発生することを期待。

しかし、ラベル部分をクリックしたとき2回clickイベントが実行されてしまう。(チェックボックスをクリックだと1回)

おそらく、ラベルをクリックで1回。それを契機に、チェックボックスがクリックと見なされ、それがバブリングしてさらに1回。こういうことだと思う。

html
<label>
  <input type="checkbox">
  testtest
</label>
jQuery
$('label').click(function(){
  console.log('test');
})

##対策
ググった結果、対策は2つ。

###input要素のクリックをイベント対象にする方法
ラベル部分クリックでチェックボックスクリックが走るので。

jQuery
$('input').click(function(){
  console.log('test');
})

###チェックボックスにchangeイベントを対象にする方法
ラベル部分クリックで、チェックボックにチェックのON/OFF走るので。

jQuery
$('input').change(function(){
  console.log('test');
})

##雑感
そもそもラベルにイベントを設定したのは、チェックボックスだけでなくラベルクリックでもイベントを拾うためだったが、チェックボックスにイベントを設定しても、ラベルクリック→チェックボックスクリックとなるので、チェックボックスにイベントを設定しても期待する動きになった。

33
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?