2012-03-12 61 views
1

我有我的asp.net MVC應用程序中以下腳本反彈圖像爲什麼jQuery函數不能有相同的ID兩個圖像執行

$(document).ready(function() { 
     $("#to-get-bigger").mouseover(function() { 
      $(this).effect("bounce", { time: 3, distance: 40 }); 
     }); 
    }); 

,並在視圖上我有以下兩種具有相同ID的圖像: -

<a href="@Url.Action("StartAssessment", "StartAssessment", new { assessmentid = Model.AssessmentID })" 
onclick = "return confirm('This will make the Assessment avilable for the regestred user.')" > 
    <img id = "to-get-bigger" border="0" src="@Url.Content("~/content/images/assessment-button1.jpg")" alt="start assessment" /> 
</a> 

<a href="@Url.Action("StartAssessment", "StartAssessment", new { assessmentid = Model.AssessmentID })" 
onclick = "return confirm('This will make the Assessment avilable for the regestred user.')" > 
    <img id = "to-get-bigger" border="0" src="@Url.Content("~/content/images/assessment-button1.jpg")" alt="start assessment" /> 
</a> 

但問題是,jQuery函數將只執行和彈跳一個圖像,而不會在第二圖像上工作,,雖然我已經閱讀了jQuery選擇在這如果#to-get-bigger將返回所有具有此ID的元素d一旦用戶將鼠標移動到任何目標元素上,Jquery函數就會被執行? BR

+0

我個人只使用ID來表示唯一的東西,而這類東西的類是幾個對象更全局的東西。 – pbond 2012-03-12 15:18:26

+0

如果ID不是唯一的,ID應該如何識別? – 2012-03-12 15:18:55

+1

根據名稱,ID是唯一的,因此對兩個元素使用相同的ID是無效的。 – 2012-03-12 15:19:52

回答

3

具有相同的多個元素id是無效的,並導致類似的問題。 id屬性應該是唯一的。引用多個元素有一個屬性,使用class

HTML

<a href="@Url.Action("StartAssessment", "StartAssessment", new { assessmentid = Model.AssessmentID })" onclick="return confirm('This will make the Assessment avilable for the regestred user.')" > 
    <img class="to-get-bigger" border="0" src="@Url.Content("~/content/images/assessment-button1.jpg")" alt="start assessment" /> 
</a> 

<a href="@Url.Action("StartAssessment", "StartAssessment", new { assessmentid = Model.AssessmentID })" onclick="return confirm('This will make the Assessment avilable for the regestred user.')"> 
    <img class="to-get-bigger" border="0" src="@Url.Content("~/content/images/assessment-button1.jpg")" alt="start assessment" /> 
</a> 

jQuery的

$(document).ready(function() { 
    $(".to-get-bigger").mouseover(function() { 
     $(this).effect("bounce", { time: 3, distance: 40 }); 
    }); 
}); 
+0

但在我的情況下,我想實現的是,我有一個視圖,顯示大約20個項目的圖像,我想incase用戶將鼠標移動這20個圖像中的任何一個來反彈相關的圖像,,所以我怎麼能實現這個要求;我應該例如提供20個不同的ID和相同的jQuery功能! – 2012-03-12 15:40:00

+0

我給出的例子完全是這樣的 - 每個具有'to-get-bigger'類的元素都將運行指定的代碼。你不需要給每一個它自己的類和事件處理程序。 – 2012-03-12 15:41:26

3

Id必須是唯一的。 jQuery使用的原生JavaScript方法document.getElementById()僅返回找到的具有特定ID的第一個元素。

如果您通過ID選擇使用jQuery的元素,它將只返回一個元素,因爲只能有一個具有該ID的有效元素。雖然在某些情況下我已經看到它的工作,比如jquery角落插件,儘管如此,在沒有使用唯一ID的情況下,在所有瀏覽器中都不起作用。

相關問題