使用jQuery / ASP.NET更新映像(runat服务器)Src

时间:2009-12-09 07:22:27

标签: asp.net jquery image-replacement

我正在尝试使用jQuery更新图像的来源。问题是img正在运行服务器端,因为它的初始源是在加载时设置的。

这是ASPX / HTML:

<h2><asp:Label ID="lblTitle" runat="server" /></h2>
<img id="largeImg" runat="server" width="320" alt="Large Image" />
<p class="thumbs">
 <a id="imgBACK" runat="server" title="Back"><img id="imgBACK_Thumb" runat="server" /></a>
 <a id="imgFRONT" runat="server" title="Front"><img id="imgFRONT_Thumb" runat="server" /></a>
 <a id="imgINSIDELEFT" runat="server" title="Inside Left"><img id="imgINSIDELEFT_Thumb" runat="server" /></a>
 <a id="imgINSIDERIGHT" runat="server" title="Inside Right"><img id="imgINSIDERIGHT_Thumb" runat="server" /></a>
</p>

可以找到正在使用的示例jQuery代码here或更低版本:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Image Replacement</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
        $("h2").append('<em></em>')
    $(".thumbs a").click(function(){

        var largePath = $(this).attr("href");
        var largeAlt = $(this).attr("title");

        $("#largeImg").attr({ src: largePath, alt: largeAlt });

        $("h2 em").html(" (" + largeAlt + ")"); return false;
    });
});
</script>
<style type="text/css">
body {
    margin: 20px auto;
    padding: 0;
    width: 580px;
    font: 75%/120% Arial, Helvetica, sans-serif;
}
h2 {
    font: bold 190%/100% Arial, Helvetica, sans-serif;
    margin: 0 0 .2em;
}
h2 em {
    font: normal 80%/100% Arial, Helvetica, sans-serif;
    color: #999999;
}
#largeImg {
    border: solid 1px #ccc;
    width: 550px;
    height: 400px;
    padding: 5px;
}
.thumbs img {
    border: solid 1px #ccc;
    width: 100px;
    height: 100px;
    padding: 4px;
}
.thumbs img:hover {
    border-color: #FF9900;
}
</style>
</head>
<body>
<h2>Illustrations</h2>
<p><img id="largeImg" src="images/img1-lg.jpg" alt="Large image" /></p>
<p class="thumbs">
    <a href="images/img2-lg.jpg" title="Image 2"><img src="images/img2-thumb.jpg" /></a>
    <a href="images/img3-lg.jpg" title="Image 3"><img src="images/img3-thumb.jpg" /></a>
    <a href="images/img4-lg.jpg" title="Image 4"><img src="images/img4-thumb.jpg" /></a>
    <a href="images/img5-lg.jpg" title="Image 5"><img src="images/img5-thumb.jpg" /></a>
    <a href="images/img6-lg.jpg" title="Image 6"><img src="images/img6-thumb.jpg" /></a>
</p>
</body>
</html>

目前,所有图像源在加载时都是完美的(通过代码隐藏加载小图像和大图像)。但是,单击缩略图不会更改大图像,因为它正在运行服务器端。

有关如何解决此问题的任何想法?

非常感谢您提前!在我的头撞到墙上太多时间后,我终于扔掉了毛巾(至少几个小时)。

谢谢!

- 亚当

1 个答案:

答案 0 :(得分:2)

这应该有效,除了两点:

  1. 可以在客户端更改映像的src,但不希望在回发后在服务器端看到它。图片未发布,仅发布输入字段。
  2. 您的imgrunat="server" - 这意味着页面上的id更改(除非它位于根级别,例如,没有母版页,面板,中继器等)。你需要使用

    $('#<%=largeImg.ClientID%>')
    

    哪个非常难看,或者只是添加一个类并在选择器中使用它:

    <img id="largeImg" runat="server" width="320" alt="Large Image"
         CssClass="LargeImage" />
    
    $(".LargeImage").attr({ src: largePath, alt: largeAlt });