【发布时间】:2015-12-08 23:52:40
【问题描述】:
我有以下标记来显示 jQuery 滑块内的图像:-
<li>
<figure> <a href="~/img/big.jpg" class="thumb">
<img src="~/img/small.jpg" alt=""/>
<span>
<strong>Project name:</strong><em>Villa</em>
<img src="~/img/searchsmall.png" alt=""
data-goto="@Url.Action("OurProjects", "Home", new { name = "villaA" })"/>
</span>
</a>
</figure>
</li>
在加载滑块内图像的回调函数中,我想在当前占位符内添加一个新的<a>,其中链接的 href 等于 data-goto 值。
我尝试了以下,
function loadImage(src, callback) {
var img = $('<img>').on('load', function () {
callback.call(img);
});
img.attr('src', src);
var allcaptions = $("figure span");
// setTimeout is a hack here, since the ".placeholders" don't exist yet
setTimeout(function () {
$(".placeholder").each(function (i) {
// in each .placeholder, copy its caption's mark-up into it
// (remove the img first)
var caption = allcaptions.eq(i).clone();
var t = $(this).find("img").attr('data-goto');
caption.append("<a href=t>test</a>");
caption.find("img").remove();
$(this).append("<div class='caption'>" + caption.html() + "</div>");
});
}, 500);
}
但生成的链接将具有“未定义”作为其href。
编辑
占位符类会在jquery的slider里面,如下
EDIT-2
这是页面加载时的标记:-
<li>
<figure>
<a href="~/img/big.jpg" class="thumb">
<img src="~/img/small.jpg" alt=""/>
<span>
<strong>Project name:</strong><em>Villa</em>
<img src="~/img/searchsmall.png" alt=""
data-goto="@Url.Action("OurProjects", "Home", new { name = "villaA" })"/>
</span>
</a>
</figure>
</li>
现在,当您单击 small.jpg 图像时,big.jpg 将显示在滑块内。这是滑块内的标记
<div id="galleryOverlay" class="visible" style="display: block;">
<div id="gallerySlider" style="left: 0%;">
<div class="placeholder">
<img src="/img/big.jpg">
<div class="caption">
<div class="caption">
<strong>Project name: </strong>
<em>Villa</em>
<img data-goto="/OurProjects?name=villaA" alt="" src="/img/searchsmall.png">
<a>test</a>
</div>
</div>
<div class="placeholder">
<div class="placeholder">
<div class="placeholder">
<div class="placeholder">
<div class="placeholder">
<div class="placeholder">
<div class="placeholder">
<div class="placeholder">
链接没有 href 或 href 未定义。这是我的问题吗?
EDIT-3
【问题讨论】:
-
它将以
t作为其href,而不是undefined。 -
@Barmar 当前 "var t = $(this).find("img").attr('data-goto');"正在返回 undefined ...虽然我说要找到 img 然后获取它的 data-goto 属性..!不知道为什么这不起作用?
-
这越来越令人困惑。我看不出屏幕截图中的 DOM 与问题中的 HTML 有何关系。您需要在代码运行之前而不是之后显示 DOM 的样子。
-
该标记看起来不正确。你有两个
<div class="caption">,还有很多缺失的</div>。我猜你想缩写,但你遗漏了太多。 -
你能做一个 jsfiddle 来演示这个问题吗?
标签: javascript jquery asp.net-mvc