2012-03-12 37 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的情况下,在所有浏览器中都不起作用。

相关问题