0

これは私のマークアップです:

<div id="divContainer">
    <div>
        <table></table>
    </div>
    <div>
        <table></table>
    </div>
    ....
</div>

すべてのテーブルのmouseenterすべての にイベントを登録する必要があります(それぞれの中に存在します)。tddiv

$(document).ready(function () {
    $allTds = $('#divContainer').find("tr").find("td");
    ...
    SomeFunction();
});

function SomeFunction(){
   $allTds.on({
       mouseenter: function (e) {
           alert('hover');
       }
   });
}

しかし、私はアラートを受け取りません。

4

2 に答える 2

3

イベントリスナーを適用する方法は奇妙です。

$('#divContainer').on('mouseenter','td',function() {
    alert('mouse entered');
});

また: td 要素をキャッシュするのは良いことですが、もっと単純なものに固執しないのはなぜですか?

$allTd = $('#divContainer td');
于 2013-04-10T06:19:44.463 に答える
1

イベント ハンドラーがバインドされていない理由は<td>、ドキュメント準備完了ハンドラーに入ったときに要素が存在しないためです。

これにはイベント委任を使用する必要があります。例えば

window.jQuery(function($) {
    $('#divContainer').on({
        mouseenter: function(e) {
            alert('hover');
        }
    }, 'td');
});

このように#divContainer、イベントをリッスンし、<td>.

http://api.jquery.com/on/#direct-and-delegated-eventsを参照してください

$allTdsまた、変数がドキュメント対応ハンドラーでのみ定義され、関数のスコープ内にないというスコープの問題もありましたSomeFunction

于 2013-04-10T06:24:27.683 に答える