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

$(el).data('some-key', 'some-value')您可以使用和将一些数据附加到您的元素

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

通过这种方式,您可以将数据附加到元素并在以后使用它。

于 2013-01-06T20:38:49.630 回答
1

绝对地。它被称为javascript的bind函数:

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

另一个类似的有用功能是 jquery 的代理功能。这只会跟踪范围,并且不允许您发送其他参数:

$.proxy(playSound, this)
于 2013-01-06T20:42:27.820 回答