2013-01-06 43 views
0

我創建動態的一些div和我附加onclick函數給他們。 有什麼辦法可以附加以這種方式參數的函數嗎?使用參數附加函數動態創建div與jQuery

如果我只是在html中創建div,我可以附加一個函數,它可以很好地工作。我也可以附加不帶參數的簡單函數,並且它們完美地工作。

我怎樣才能附加這個功能,這需要'這個'作爲參數我的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'); 
}); 

任何幫助將非常感謝! 謝謝!

+0

的最後一個例子是缺少'()'function' – Alexander

+0

後''soundId ==(「d」)'是同'soundId =='d'' – elclanrs

回答

1

可以使用$(el).data('some-key', 'some-value')

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

這樣就可以把數據元素,並利用它後面附加一些數據到元素。

3

對於您可以使用類似這種特殊情況下:如果你重構你的代碼下降el,並以這種方式使用this

$(".myDiv").click(function(){ 
    playSound(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); 
+1

謝謝mate !!完美地工作! – skad

+1

不錯,簡單:) – lucassp

+0

@skad,沒問題 – Alexander

1

絕對。這就是所謂的JavaScript的功能bind

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

類似的jQuery的代理功能的另一種有用的功能。這隻跟蹤的範圍,但並不允許你送其他參數:

$.proxy(playSound, this) 
+0

關於'.bind()'的東西是正確的,但它不是一個jQuery功能。它是原生JavaScript。然而,有一種叫做'$ .proxy()'的有點類似的jQuery特性。 – Pointy

+0

感謝Pointy,相應編輯 –