jQueryでclickできない
jQueryで困ったのでメモ。
一応、バージョンは1.8.2。ブラウザはFirefox 20.0.1。
jQueryのclick()でa要素のクリックイベントを発行して、自動的にリンク先に飛ぼうと思ったのですが、うまくいきませんでした。
つまり、
$('#linkToSomewhere').click();
とかやってみたわけですが、リンク先に飛べないのです。
こういう場合、素直にDOM要素のclick()を呼ぶしかないようで、
$('#linkToSomewhere')[0].click();
とやれば万事解決しました。
jQueryのイベント系の関数は、イベント発行だけして、DOMの本来の動作は起こさないのかなと思いましたが、それも違う様子。
というのも、a要素に対して、addEventListener('click', function)で追加されたイベントも発行されないみたいです。
じゃあ、jQueryを使って追加されたイベントしか呼ばないのか、というとそれも違うみたい。
div要素に対して、addEventListener('click', function)で追加されたイベントは、jQueryのclick()できちんと実行されました。
a要素とdiv要素でなにが違うんでしょうね…?
それから、a要素でも、onclick属性に指定されたイベントはきちんと実行されました。(もちろんdiv要素でも。)
もはや、わけがわからない…。
jQueryのclick()で呼ばれるイベントをまとめるとこんな感じ。
要素 | jQueryのclick(fn) | addEventListener | onclick |
---|---|---|---|
a要素 | ○ | × | ○ |
div要素 | ○ | ○ | ○ |
理解するには、jQueryのソースを読んでみるしかないのかなぁ…。
それともブラウザ側の問題とか?