Cevapların birçoğunun ilginç olduğunu söylemeliyim, ancak son zamanlarda benzer bir sorunum vardı ve çözüm DOM yoluna giderek son derece basitti. Farklıdır, çünkü yinelemezsiniz, ancak doğrudan ihtiyacınız olan olayı hedeflersiniz, ancak aşağıda daha genel bir cevap vereceğim.
Arka arkaya bir görüntü vardı:
<table>
<td><tr><img class="folder" /></tr><tr>...</tr></td>
</table>
Ve bu görselin kendisine bir tıklama olay işleyicisi eklenmişti:
imageNode.click(function () { ... });
Amacım tıklanabilir alanı tüm satıra genişletmekti, bu yüzden önce tüm resimleri ve göreli satırları aldım:
tableNode.find("img.folder").each(function () {
var tr;
tr = $(this).closest("tr");
// <-- actual answer
});
Şimdi asıl anwer hattında asıl soruya bir cevap vererek aşağıdaki gibi yaptım:
tr.click(this.onclick);
Böylece olay işleyicisini doğrudan DOM öğesinden aldım ve jQuery click olay işleyicisine koydum. Tıkır tıkır çalışıyor.
Şimdi, genel duruma. Eski jQuery günlerinde tüm olayları Douglas Crockford'un ölümlülerine hediye ettiği iki basit ama güçlü fonksiyonla bir nesneye bağlayabilirsiniz :
function walkTheDOM(node, func)
{
func(node);
node = node.firstChild;
while (node)
{
walkTheDOM(node, func);
node = node.nextSibling;
}
}
function purgeEventHandlers(node)
{
walkTheDOM(node, function (n) {
var f;
for (f in n)
{
if (typeof n[f] === "function")
{
n[f] = null;
}
}
});
}