0

我目前在网站上使用相当可爱的 jQuery slideviewer 1.1 插件,但想从显示的图像中提取 alt 属性并在适当的时候将它们插入到 div 中。

该插件的当前代码如下所示以供参考:

jQuery(function(){
   jQuery("div.svw").prepend("<img src='/template/theme/designdistillery/img/bg-portfolio-loading.gif' class='ldrgif' alt='loading...'/ >"); 
});
var j = 0;
var quantofamo = 0;
jQuery.fn.slideView = function(settings) {
    settings = jQuery.extend({
    easeFunc: "easeInOutExpo",
    easeTime: 750,
    toolTip: false
    }, settings);
    return this.each(function(){
        var container = jQuery(this);
        container.find("img.ldrgif").remove(); // removes the preloader gif
        container.removeClass("svw").addClass("stripViewer");       
        var pictWidth = container.find("img").width();
        var pictHeight = container.find("img").height();
        var pictEls = container.find("li").size();
        var stripViewerWidth = pictWidth*pictEls;
        container.find("ul").css("width" , stripViewerWidth); //assegnamo la larghezza alla lista UL    
        container.css("width" , pictWidth);
        container.css("height" , pictHeight);
        container.each(function(i) {

            jQuery(this).after("<div class='stripTransmitter' id='stripTransmitter" + (j) + "'><ul><\/ul><\/div>");
            jQuery(this).find("li").each(function(n) {
                        jQuery("div#stripTransmitter" + j + " ul").append("<li><a title='" + jQuery(this).find("img").attr("alt") + "' href='#'>"+(n+1)+"<\/a><\/li>");                                             
                });
            jQuery("div#stripTransmitter" + j + " a").each(function(z) {
                jQuery(this).bind("click", function(){

                jQuery(this).addClass("current").parent().parent().find("a").not(jQuery(this)).removeClass("current"); // wow!
                var cnt = -(pictWidth*z);
                container.find("ul").animate({ left: cnt}, settings.easeTime, settings.easeFunc);
                return false;
                   });
                }); 


                // next image via image click   14/01/2009
                jQuery("div#stripTransmitter" + j + " a").parent().parent().parent().prev().find("img").each(function(z) {
                jQuery(this).bind("click", function(){
                    var ui  =   jQuery(this).parent().parent().parent().next().find("a");
                    if(z+1 < pictEls){
                        ui.eq(z+1).trigger("click");
                    }
                    else ui.eq(0).trigger("click");
                   });
                });

            jQuery("div#stripTransmitter" + j).css("width" , pictWidth);
            jQuery("div#stripTransmitter" + j + " a:first").addClass("current");
            if(settings.toolTip){
            container.next(".stripTransmitter ul").find("a").Tooltip({
                track: true,
                delay: 0,
                showURL: false,
                showBody: false
                });
            }
            });
        j++;
  });   
};
4

4 回答 4

1

第一个图像没有标题,因为标题仅在onclick.
这可以通过插入来解决:

var altText = $(this).find("img").eq(0).attr("alt"); 
$("#caption").html(altText).fadeIn("slow");   
于 2011-05-13T06:32:49.417 回答
0

该行在屏幕上激活(或显示)图像

container.find("ul").animate({ left: cnt}, settings.easeTime, settings.easeFunc);

您需要将此行修改为:

container.find("ul").animate({ left: cnt}, settings.easeTime, settings.easeFunc, function(){
   // z is the index of the currently showing picture, 
   // it comes from the .each call above

   var altText = $(this).find("img").eq(z).attr("alt"); //get alt value

   // now insert the text from the alt value
   $("#id_of_your_text_display_div").html(altText);
});

希望这可以帮助....

于 2009-10-24T02:54:15.570 回答
0

它很简单:

$("div").html( $("#myImg").attr("alt") );

你希望这发生在什么时候?

于 2009-10-23T13:55:52.740 回答
0

感谢所有的帮助家伙!

我调整了 ekhaled 的脚本版本,使标题显示在该系列中的第一张图片下方,并为任何后续图片的标题添加了简单的淡入淡出效果 - 现在一切正常!

再次感谢 :)

jQuery(function(){
jQuery("div.svw").prepend("<img src='/template/theme/designdistillery/img/bg-portfolio-loading.gif' class='ldrgif' alt='loading...'/ >"); 
});
var j = 0;
var quantofamo = 0;
jQuery.fn.slideView = function(settings) {
        settings = jQuery.extend({
        easeFunc: "easeInOutExpo",
        easeTime: 750,
        toolTip: false
        }, settings);
        return this.each(function(){
            var container = jQuery(this);
            container.find("img.ldrgif").remove(); // Removes the preloader gif
            container.removeClass("svw").addClass("stripViewer");       
            var pictWidth = container.find("img").width();
            var pictHeight = container.find("img").height();
            var pictEls = container.find("li").size();
            var stripViewerWidth = pictWidth*pictEls;
            container.find("ul").css("width" , stripViewerWidth);   
            container.css("width" , pictWidth);
            container.css("height" , pictHeight);
            container.each(function(i) {
                var altTextstart = $(this).find("img").attr("alt");
                $("#caption").html(altTextstart);   
                jQuery(this).after("<div class='stripTransmitter' id='stripTransmitter" + (j) + "'><ul><\/ul><\/div>");
                jQuery(this).find("li").each(function(n) {
                    jQuery("div#stripTransmitter" + j + " ul").append("<li><a title='" + jQuery(this).find("img").attr("alt") + "' href='#'>"+(n+1)+"<\/a><\/li>");                                     
                });
                jQuery("div#stripTransmitter" + j + " a").each(function(z) {
                    jQuery(this).bind("click", function(){  
                        $("#caption").html(altTextstart).hide();    
                        jQuery(this).addClass("current").parent().parent().find("a").not(jQuery(this)).removeClass("current");
                        var cnt = -(pictWidth*z);
                        container.find("ul").animate({ left: cnt}, settings.easeTime, settings.easeFunc,function(){
                            // z is the index of the currently showing picture, 
                            // It comes from the .each call above
                            var altText = $(this).find("img").eq(z).attr("alt"); // Get alt value
                            // Now insert the text from the alt value
                            $("#caption").html(altText).fadeIn("slow");
                        });
                        return false;
                    });
                }); 
                jQuery("div#stripTransmitter" + j + " a").parent().parent().parent().prev().find("img").each(function(z) {
                    jQuery(this).bind("click", function(){
                        var ui  =   jQuery(this).parent().parent().parent().next().find("a");
                        if(z+1 < pictEls){
                            ui.eq(z+1).trigger("click");
                            }
                            else ui.eq(0).trigger("click");
                         });
                    });
            jQuery("div#stripTransmitter" + j).css("width" , pictWidth);
            jQuery("div#stripTransmitter" + j + " a:first").addClass("current");                        
            if(settings.toolTip){
                container.next(".stripTransmitter ul").find("a").Tooltip({
                    track: true,
                    delay: 0,
                    showURL: false,
                    showBody: false,
                    });
                }
            });
        j++;
    });
};
于 2009-10-27T10:26:07.703 回答