$(document).ready(function () {
$("href").attr('href', 'title');
});
$('a[href$=.jpg]').each(function () {
var imageSrc = $(this).attr('href');
var img = $('<img />').attr('src', imageSrc).css('max-width', '300px').css('max-height', '200px').css('marginBottom', '10px').css('marginTop', '10px').attr('rel', 'lightbox');
$(this).replaceWith(img);
});
});
这是我目前的jQuery代码,我希望将所有链接'href更改为与其标题相同,然后再将它们嵌入页面中。然而,随着代码中href更改为title位,它将停止工作。我是Javascript的新手,所以我肯定做错了什么,只是不确定是什么!任何帮助非常感谢!
谢谢你们
修改
这是我要更改的HTML:
<p class="entry-content">Some interesting content<a href="http://example.com/index.php/attachment/11" title="example.com/file/testing-20101016T114047-2k5g3ud.jpeg" rel="external" class="attachment" id="attachment-11">http://example.com/index.php/attachment/11</a></p>
答案 0 :(得分:3)
您更改错了,您尝试选择href
元素而不是a
。
此修复应该这样做:
$("a[title]").each(function() {
$(this).attr('href',$(this).attr('title'));
});
它将使用a
选择所有title
个元素,并使用此值设置href
。
答案 1 :(得分:1)
这是一种更有效的方式。
由于您只是替换<a>
元素,因此无需更改其href
。只需选择以<a>
结尾的jpg/jpeg
元素,然后直接使用该属性。
示例: http://jsfiddle.net/5ZBVf/4/
$(document).ready(function() {
$("a[title$=.jpg],[title$=.jpeg]").replaceWith(function() {
return $('<img />', {src:this.title, rel:'lightbox'})
.css({maxWidth: 300,maxHeight: 200,marginBottom: 10,marginTop: 10});
});
});
您的 .each()
位于.ready()
函数之外。
您可以像这样轻松完成href
更改:
$(document).ready(function () {
$("a").attr('href', function() { return this.title; });
});
The .attr()
method将接受一个函数,其中返回值是(在这种情况下)href
的新值。
所以整件事情看起来像这样:
示例: http://jsfiddle.net/5ZBVf/3/
$(document).ready(function() {
$("a[title]").attr('href', function() { return this.title; })
.filter('[href$=.jpg],[href$=.jpeg]')
.replaceWith(function() {
return $('<img />', {src:this.href, rel:'lightbox'})
.css({maxWidth: 300,maxHeight: 200,marginBottom: 10,marginTop: 10});
});
});
答案 2 :(得分:0)
尝试:
$("a").each(function () {
var $this = $(this);
$this.attr('href', $this.attr('title'));
});
答案 3 :(得分:0)
这一行:
$("href").attr('href','title');
找到所有href
元素并将其href
attr替换为字符串'title'。由于没有href元素,请尝试改为:
// for every anchor element on the page, replace it's href attribute with it's title attribute
$('a').each(function() {
$(this).attr('href', $(this).attr('title');
});
答案 4 :(得分:0)
检查一下:http://jsfiddle.net/TbMzD/似乎做你想做的事。 注意:$(document).ready()因为jsfiddle而被注释,你实际上需要在你的代码中使用它。