Javascript,jQuery - 我做错了什么?

时间:2010-10-16 14:17:23

标签: javascript jquery

$(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>

5 个答案:

答案 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而被注释,你实际上需要在你的代码中使用它。