jQuery Image Changer:Alt标签

时间:2011-09-03 09:39:04

标签: javascript jquery

Javascript不是我最强的套装所以请耐心等待。

我在有人为我建造的网站上有一个图像转换器。它会根据点击的缩略图更改大图像(http://mitre.mitrebluelight.co.uk/shop/buy/footwear/cold-wet-weather)。

我已经为大图像和缩略图显示了ALT标记,但我正在尝试让脚本不仅更改大图像SRC,还会更改ALT标记。

这是脚本:

$(".small-images li a").click(function(){
    var $target = $(this).attr('href');

    $(".large-image img").fadeOut('fast',function(){
        $(".large-image img").attr('src',$target)
    $(".large-image img").fadeIn('fast');   
})

这是HTML(请注意,如果某些标签看起来不寻常,那是因为我使用ExpressionEngine作为CMS):

                    <div class="large-image">{exp:imgsizer:size image="/assets/media/{image_large}" width="389" height="250" alt="{image_large_title}"}</div><!-- End of div: large-image -->
                <div style="display:none;">
                    {images}
                        {exp:imgsizer:size image="/assets/media/{filenm}" width="389" height="250" alt="{image_title}"}
                    {/images}
                </div>
                <div class="small-images">
                    <h5>More images:</h5>
                    <ul>
                        {images}
                            <li><a href="{exp:imgsizer:size image="/assets/media/{filenm}" width="389" height="250" justurl="yes"}" {image_switch="|||class='last'"}>{exp:imgsizer:size image="/assets/media/{filenm}" width="89" height="89" alt="{image_title}"}</a></li>
                        {/images}
                    </ul>
                </div><!-- End of div: small-images -->

感谢任何帮助!

此致

汤姆

4 个答案:

答案 0 :(得分:2)

使用$(".large-image img").attr('alt','your-alt');用于src,你在代码中有其他错误,这是固定代码:

$(".small-images li a").click(function(e){ 
     e.preventDefault(); // to prevent default action

     var $target = $(this).attr('href');

    $(".large-image img").fadeOut('fast',function(){
        $(".large-image img").attr('src',$target);
        $(".large-image img").attr('alt','your-alt');
        $(".large-image img").fadeIn('fast');  
    }); 
});

确保在DOM准备就绪时使用它或使用document.ready

答案 1 :(得分:1)

您想要更改alt代码的image属性吗?添加以下代码:

$(".large-image img").attr('alt', 'new alt text');

总而言之,可能是:

$(".small-images li a").click(function(){
    var $target = $(this).attr('href');
    var $alt = $(this).find('img').attr('alt');  // get alt attribute of next image

    $(".large-image img").fadeOut('fast',function(){
        $(".large-image img").attr('src',$target);
        $(".large-image img").attr('alt',$alt); // set alt attribute
        $(".large-image img").fadeIn('fast');   
    });

答案 2 :(得分:1)

是否要使用链接中图像的alt属性?试试这个:

$(".small-images li a").click(function(){
    var $target = $(this).attr('href');
    var alt = $(this).find("img").attr('alt');

    $(".large-image img").fadeOut('fast',function(){
        $(".large-image img").attr('src',$target).attr('alt',alt);
    $(".large-image img").fadeIn('fast');   
})

答案 3 :(得分:-1)

您已经使用锚点的href属性来设置图像src,因此您可以使用$('img', this)查找已单击的图像的alt并执行相同操作。

$(".small-images li a").click(function(){
    var target = $(this).attr('href');
    var alt = $('img', this).attr('alt') ;
    $(".large-image img").fadeOut('fast',function(){
        $(this).attr('alt',alt) ;
        $(this).attr('src',target);
        $(this).fadeIn('fast');
    }) ;
}) ;

虽然你可以。你不需要在javascript中使用$代替变量,只需var target即可。

编辑 - 根据@ Usman的回答提供的更新版本

(function($) {
    $(document).ready(function() {
        $(".small-images li a").click(function(){
            e.preventDefault() ;
            var target = $(this).attr('href');
            var alt = $('img', this).attr('alt') ;
            $(".large-image img").fadeOut('fast',function(){
                $(this).attr('alt',alt) ;
                $(this).attr('src',target);
                $(this).fadeIn('fast');
            }) ;
        }) ;
    }) ;
})(jQuery);