2012-08-02 75 views
0

工作下面的代碼工作正常使用Opera,但不與IE 8的jQuery的onmouseover和onmouseout不與IE

我頁面上dtest2 div元素,用於測試目的,我試圖改變鼠標懸停div元素的含量和圖像的鼠標事件。

HTML:

<a ><img title='' class='imgclass' src='images/image1.jpg' onmouseover="f1('1')" onmouseout="f2('1');" ></a> 

的Jquery:

function f1(id) 
{ 

$('#dtest2').html("Test "+id); 
} 
    function f2(id) 
{ 
     $('#dtest2').html("Test 2 "+id); 
} 

與歌劇它工作正常。用IE瀏覽器工作1次或幾次,然後停止工作。任何具體的命令爲IE?

這些圖像來自數據庫,id是否存在來自數據庫的唯一編號。

謝謝

+0

一直工作在IE8,IE9,FF和Chrome的最新版本:http://jsfiddle.net/FranWahl/bYfQ2/ – Nope 2012-08-02 23:11:21

回答

1

你在這裏混合你的成語一點點。它應該仍然可以工作,但通過執行「jQuery方式」,您可能會獲得更好的結果(並且絕對整潔的代碼),這涉及到將代碼與HTML分離。

因此,首先在HTML:

<a> 
    <img title='' class='imgclass' src='images/image1.jpg'> 
</a> 

這是一樣的,你有什麼,沒有onMouseOveronMouseOut屬性。

現在,jQuery的,最好是在你使用<script src="url.js" type="text/javascript"></script>一個單獨的文件來加載英寸

$('img.imgclass').hover(function() { 
    $('#dtest2').html('Test'); 
}, function() { 
    $('#dtest2').html('Test2'); 
}); 

一個jQuery的主要優點是,它被設計成平滑所有的瀏覽器不兼容,讓您剛剛所有瀏覽器都需要一個代碼。

至於你想傳遞給你的函數的id,這有點棘手。這個數字從哪裏來,它是什麼意思?這將影響如何處理。

如果不出意外,你就可以將其與HTML5 data-屬性你的HTML,像這樣:

$('img.imgclass').hover(function() { 
    var id = $(this).data('hover-id'); 
    $('#dtest2').html('Test ' + id); 
}, function() { 
    var id = $(this).data('hover-id'); 
    $('#dtest2').html('Test2 ' + id); 
}); 

<a> 
    <img title='' class='imgclass' src='images/image1.jpg' data-hover-id="1"> 
</a> 

然後,您可以用下面的變化對jQuery檢索

EDIT編輯問題:因爲它們是來自數據庫的唯一ID,所以將它們用作imgid可能是有意義的。但是,您不應該使用純數字id s。所以,無論你用什麼來從數據庫中取出ID,都應該加上一些東西,或許只是iimg

那麼你的HTML看起來像

<img id="i1" title="" src="images/image1.jpg"> 

和你的jQuery可以訪問與$(this).attr('id')而不是$(this).data('hover-id')

+0

但是如何傳遞id變量? – 2012-08-02 23:12:00

+0

@SamirMemmedov:請參閱我的編輯版本,瞭解一些相關討論。儘管如此,你應該編輯你的問題,提供更多關於該ID的信息。 – KRyan 2012-08-02 23:12:42

+0

data-hover-id =「1」如何在jQuery中使用該id?喜歡有像「測試」+編號的文本? – 2012-08-02 23:13:14