在图像中使用runat =“ server”时未调用jQuery函数

时间:2018-10-24 12:57:06

标签: javascript jquery html asp.net

我在aspx页面中有一个html图像标签。单击该图像时,将执行某些jQuery功能。最近,我将属性添加到图像,因为我想基于某些验证来更改图像的来源。但是问题是我不理解为什么当我单击图像时,当没有属性时,它通常可以很好地工作时,为什么不调用jQuery函数。我查看了网络上所有可能的解决方案,并进行了尝试,但没有一个起作用。

请找到以下代码,并让我知道可以做些什么。

ASPX页面:jQuery函数和图像标记代码:

<script type="text/javascript" src="<%= ResolveUrl("~/Common/Scripts/jquery-1.9.1")%>"></script>
<script type="text/javascript" src="<%= ResolveUrl("~/Common/Scripts/jquery-ui-1.10.3.custom.min")%>"></script>

$(document).ready(function () { //doing something

$("#imgseats").click(function () { // doing something }); });

</script>

<ul id="list">
        <li id="listSeats" runat="server">
            <img id="imgseats" class="HeaderGradient" src="../../Common/Images/seatsPCPI.jpg" alt="Seats" runat="server" />

            //some code here
            </li>
 </ul>

aspx.cs后面的代码

if(condition)
{
    imgseats.Attributes["src"] = "../../Common/Images/seatsPCPI_MandatoryPI.jpg";
}

请帮助我解决此问题。预先感谢。

2 个答案:

答案 0 :(得分:0)

检查为图像生成的“ UniqueID”。 ASP.NET将元素runat = server的ID更改为“ ctl00_imgseats”之类的内容。根据DOM的深度,它可能是一个很长的ID。

或将jQuery选择器更改为类:例如,$('img.HeaderGradient')。您也可以使用虚拟的CSS类。

答案 1 :(得分:0)

要访问jquery中的runnat =“ server”的任何控件,您需要通过其唯一ID(即$('#<%= imgseats.ClickID%>')而不是$(“#imgseats”))来访问它们。 / p>

$(document).ready(function(){     //做某事

$('#<%=imgseats.ClientID%>').click(function () {
// doing something
}); 

});