0

私はいくつかの div を動的に作成しており、それらに onclick 関数を追加しています。このようにパラメータを取る関数をアタッチする方法はありますか?

htmlでdivを作成するだけで、関数を添付でき、完全に機能します。また、パラメーターなしで単純な関数を動的にアタッチすることもでき、それらは完全に機能します。

「this」をパラメーターとして取るこの関数をdivにアタッチするにはどうすればよいですか??

誰か提案はありますか?

onclick="playSound(this)"

function playSound(el){
var soundId = $(el).html();
if ( soundId == ('d')){
d.playclip()
}
else if ( soundId == ('a')){
a.playclip()
}
else if ( soundId == ('n')){
n.playclip()
}

このような機能を付けることができ、正常に動作します。

$(".myDiv").live("click", function(){
alert('hello');
});

どんな助けでも大歓迎です!!! ありがとう!!

4

3 に答える 3

3

この特定のケースでは、次のようなものを使用できます。

$(".myDiv").click(function(){
  playSound(this);
});

elこの方法でコードをドロップして使用するようにリファクタリングする場合this

function playSound() {
    var soundId = $(this).html();
    if (soundId == ('d')) {
        d.playclip()
    } else if (soundId == ('a')) {
        a.playclip()
    } else if (soundId == ('n')) {
        n.playclip()
    }
}

直接使用できます。

$(".myDiv").click(playSound);
于 2013-01-06T20:40:26.590 に答える
1

絶対。これはjavascriptのbind関数と呼ばれます:

playSound.bind(this, arg1, arg2, ...)

同様のもう1つの便利な関数は、jqueryのプロキシ関数です。ただし、これはスコープを追跡するだけであり、他のパラメーターを送信することはできません。

$.proxy(playSound, this)
于 2013-01-06T20:42:27.820 に答える
1

$(el).data('some-key', 'some-value')とを使用して、いくつかのデータを要素に添付できます。

$(".myDiv").live("click", function() {
   alert($(this).data('some-key'));
})

このようにして、要素にデータを添付し、後でそれを利用することができます。

于 2013-01-06T20:38:49.630 に答える