2010-05-22 52 views
0

我想爲div設置一個屬性。我已經做到了這一點:使用jQuery設置di​​v的屬性使用jQuery

$('#row-img_1').onmouseover = function(){ alert('foo'); }; 
$('#row-img_2').onmouseout = function(){ alert('foo2'); }; 

然而,上面沒有奏效,當鼠標移動到或當它移動了它不會發出警報。

我也嘗試了$('#row-img_1').attr();,我也無法讓這個工作。

我知道我應該使用更有效的事件處理系統,但我的div是動態生成的。另外這是一個小項目。 ;)

謝謝大家的幫助。

回答

1
$('#row-img_1').bind('mouseenter', function(event){ 
    // event handler for mouseenter 
}); 

$('#row-img_1').bind('mouseleave', function(event){ 
    // event handler for mouseleave 
}); 

或使用jQuerys懸停事件,您需要將事件函數綁定到的元素。設置事件屬性不起作用,因爲只有在加載頁面時才解釋它們。因此,你需要將事件回調連接以不同的方式:

$('#row-img_1').mouseover(function() { 
    alert('foo'); 
}); 
$('#row-img_2').mouseout(function() { 
    alert('foo2'); 
}); 

在jQuery中,有兩個事件:mouseentermouseleave。這些是相似的,但mouseenter不會在將鼠標從子元素移動到主元素時觸發,而mouseover將再次觸發該事件。相同的邏輯適用於mouseleave vs mouseout

但是,jquery爲這種用法提供了一個快捷方式:.hover方法。

+0

懸停爲我工作!我將如何解除懸停?我嘗試了'$('#row-img_1')。unbind('hover');'但它不起作用。 – Abs 2010-05-22 17:53:23

+0

感謝尼克斯評論,我解除了mouseenter和mouseleave的綁定,而不是平常的綁定。我可能已經從你的答案中解決了這個問題。謝謝jAndy。 – Abs 2010-05-22 17:56:11

+0

@Abs - ''.unbind('mouseenter mouseleave')':) – 2010-05-22 17:56:23

0

事件被註冊爲作爲屬性傳遞功能,如:

$('#row-img_1').mouseover(function(){ alert('foo'); }); 
$('#row-img_2').mouseout(function(){ alert('foo2'); }); 

另外,還要注意從onmouseover失蹤on。其用途不同不相同

$('#row-img_1').hover(function(){ 
    // event handler for mouseenter 
}, function(){ 
    // event handler for mouseleave 

}); 
0
$('#row-img_1').mouseover(function() { 
    alert('foo'); 
}); 
+0

-1:我認爲你的意思是'.mouseover',而不是'.onmouseover' – Eric 2010-05-22 17:50:20

+0

@Eric,是的,你是對的,這就是我的意思:-) – 2010-05-22 17:51:02

3

+1

+1 - 值得注意的是,這不是*等效*,但*與['.hover()'](http://api.jquery.com/hover/)相似。它映射到'mouseenter'和'mouseleave',而不是'mouseover'和'mouseout'。 – 2010-05-22 17:47:18

+0

好點。總之,'mouseenter'和'mouseleave'是這些應用程序所需要的,無論如何。 – Eric 2010-05-22 17:49:43

+0

@Nick - 知道這很有用! – Abs 2010-05-22 17:53:59