これは、DOMからの簡略化された抜粋です。
<td>
<button value="11" class="expand ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only" role="button" title="">
<span class="ui-button-icon-primary ui-icon ui-icon-plus"></span>
<span class="ui-button-text"></span>
</button>
</td>
これはテーブルのすべての行(〜500)で繰り返され、テーブルのIDは「eventTable」です。
ボタンのインスタンス化(jQueryUI)は次のとおりです。
$('.expand').each(function(){
$(this).button({
text: false,
icons: {
primary: "ui-icon-plus"
}
});
});
これがテーブル#eventTableのイベント委任の一部です
$('#eventTable').click(function(e){
if($(e.target).is('.expand'){
// ...
現在、Firefox 3.6.x、IE7,8では、これは機能し、if
ステートメントにステップインします。ただし、SafariとChromeでは、周囲のではなくe.target
最初のを表します。span
button
なぜこうなった?それを乗り越えて作業することはできますが、後で別のシナリオで同じ問題が発生しないように、説明が必要です。Webkitが正しく、Trident / Geckoが間違っているのはなぜですか?何が違いを引き起こしたのですか?