[英]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.