2010-09-27 14 views
1

我有動態的div爲行:如何調用鼠標功能上dyanamic的div

<table border=1><tr><td> 
<div id='div1'>fgg</div> 
<div id='div2'>dfgdfg</div> 
<div id='div3'>vcbcvb</div> 
<div id='div4'>sdfsdf</div> 
</td></tr></table> 

我如何可以調用jQuery的功能上的每個格的鼠標懸停? 這些div是動態的,可以改變數量。

回答

3
$("td div").live("mouseover", function() { 
//mouseover code here 
}); 

我建議使用一個類爲您的div,並使用選擇器:$(".rows")或類似的。不過,以上內容適用於您提供的標記。

如果您必須使用ID,這將允許您通過ID添加它。請記住,當你添加新的項目時,你將不得不爲這個id運行這個代碼(擊敗原始問題的動態部分)。

$("#mydivid").mouseover(function() { 
    //mouseover code here 
}); 

,你可以在列表中利用像這樣:

var divs = ["mydiv1", "mydiv2", "mydiv3"]; 
$(divs).each(function() { 
    $("#" + this).mouseover(function() { 
    //mouseover code here 
    }); 
}); 

這確實是個不錯的辦法,我強烈建議使用類代替。

+0

這工作正常,但這會影響tds中的整個div。我可以有5個div與id mydiv和我只想打電話給這些divs,這是可能的。我嘗試它不工作。$(「td div mydiv」)。live。任何解決方案 – zod 2010-09-28 16:09:33

+0

$(「#mydiv」)。mouseover(?? – zod 2010-09-28 16:10:25

+0

我會建議使用一個類爲你想要應用它的div,然後使用$(「。rows」)選擇器或類似的。用id做,而不用class,你會想用我添加到我的答案中的表單。 – sworoc 2010-09-28 20:03:02

2

使用事件委託,可以是.live().delegate()將事件綁定到動態創建的元素。

0

另一個簡單的方法是給所有的div同樣的類名。 您可以通過類別名稱而不是id來掛鉤單擊事件。在代碼中,您還可以使用「this」關鍵字引用當前div塊

0

除非有某些原因,您無法爲每個div,live()方法是要走的路。然而,使用班級會更有效率。

相關問題