1

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コードは、ここまたは以下にあります。

<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>

現在、すべての画像ソースは読み込み時に完全です(小さい画像と大きい画像は分離コードを介して読み込まれます)。ただし、サムネイルをクリックしても、サーバー側で実行されているため、大きな画像は変更されません。

これを修正する方法について何かアイデアはありますか?

事前にどうもありがとうございました!何時間も壁に頭をぶつけた後、ようやくタオルを投げました(少なくとも数時間)。

ありがとう!

-アダム

4

1 に答える 1

3

これは、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 });
    
于 2009-12-09T07:34:27.473 に答える