从alt属性中提取标题并插入div

时间:2009-10-23 13:48:18

标签: jquery extraction alt-attribute

我现在正在网站上使用相当可爱的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 个答案:

答案 0 :(得分:1)

第一张图片没有标题,因为标题仅在onclick之后显示 这可以通过插入:

来解决
var altText = $(this).find("img").eq(0).attr("alt"); 
$("#caption").html(altText).fadeIn("slow");   

答案 1 :(得分:0)

这很简单:

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

时,您希望这种情况发生吗?

答案 2 :(得分: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);
});

希望这会有所帮助......

答案 3 :(得分: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++;
    });
};