简体   繁体   English

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

[英]Extracting caption from alt attribute and inserting into a div

I am using the rather lovely jQuery slideviewer 1.1 plugin on a site at the moment, but would like to extract the alt attribute from images displayed and insert them into a div at the appropriate time. 我目前正在网站上使用相当可爱的jQuery slideviewer 1.1插件,但想从显示的图像中提取alt属性,并在适当的时候将它们插入div中。

The current code for the plugin is shown below for reference: 该插件的当前代码如下所示,以供参考:

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++;
  });   
};

The first image has no caption because the caption displays only after onclick . 第一张图片没有标题,因为标题仅在onclick之后显示。
This can be fixed by inserting: 可以通过插入来解决此问题:

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

It's as simple as: 就像这样简单:

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

When do you want this to happen? 你希望这种事情发生?

The image is activated (or brought into view) on screen by this line 通过此行在屏幕上激活(或显示)图像

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

you need to modify this line to: 您需要将此行修改为:

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);
});

Hope this helps.... 希望这可以帮助....

Thanks for all the help guys! 感谢所有的帮助!

I tweaked ekhaled's version of the script so that the caption was displayed underneath the first image in the series, as well as a simple fade effect for captions for any subsequent images - it's all working brilliantly now! 我调整了ekhaled的脚本版本,以使字幕显示在系列的第一个图像下方,并且为后续任何图像的字幕提供简单的淡入淡出效果-现在,它们的工作都非常出色!

Thanks again :) 再次感谢 :)

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++;
    });
};

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM