拿<span>课程并输入<a> attribute jquery</a> </span>

时间:2010-06-12 16:44:01

标签: javascript jquery

我有这样的HTML。

<span class="gallery-open-item year-icon-Yes 2010">
<a href="/year/none">
</a>
</span>

我需要使用jQuery检查span.gallery-open-item是否有year-icon-Yes类,如果是,请使用下一个(此示例为2010)类并将其放在href属性中,如下所示:

<a href="/year/2010"/>

我需要的所有这些都是jQuery或JavaScript。

我做了一些实验,但我不能把2010带到正常的javascript变量。 有什么想法吗?

抱歉我的英文。

3 个答案:

答案 0 :(得分:2)

这是另一种方法。经过测试,工作。

$('.gallery-open-item.year-icon-Yes').each(function(){
    that = this;
    var classes = $(this).attr('class').split(' ');
    $.each(classes, function(i, val) {
        if (val.match(/^y-/gi)) {
            $('a', that).attr('href', function(){
                return this.href.replace('none', val.split('-')[1]);
            });
        }
    });
});

假设这个标记:

<span class="gallery-open-item year-icon-Yes y-2010">
<a href="/year/none/">
    Test
</a>
</span>

答案 1 :(得分:1)

这是一种做法。首先,我们选择同时包含spangallery-open-item类的year-icon-Yes代码。然后,对于它们中的每一个,我们将获得span标签所具有的类数组。我循环遍历类名,并检查第一个是否为数字。最后,修改a内的span标记以设置所需的网址。

$(document).ready(function() {
    $('span.gallery-open-item.year-icon-Yes').each(function() {
        var classNames = $(this).attr('class').split(' ');
        for (var i = 0; i < classNames.length; i++)
        {
            if (!isNaN(classNames[i]))
            {
                var year = classNames[i];
                $(this).find('a').attr('href', '/year/'+year);
                break;
            }
        }
    });
});

修改:根据类名称不应以数字开头的注释,对于y-xxxx形式的类名称来说,这很容易实现:

$(document).ready(function() {
    $('span.gallery-open-item.year-icon-Yes').each(function() {
        var classNames = $(this).attr('class').split(' ');
        for (var i = 0; i < classNames.length; i++) {
            var year = classNames[i].substring(2);
            if (!isNaN(year)) {
                $(this).find('a').attr('href', '/year/' + year);
                break;
            }
        }
    });
});

答案 2 :(得分:1)

这个怎么样:

$('span.gallery-open-item.year-icon-Yes > a').each(function(i, elem) {
  $.each($(elem).parent().attr('class').split(' '), function(j, klass) {
    // NOTE: use /^y-([\d]*)$/ if years are prefixed with y-
    if (year = klass.match(/^([\d]*)$/))
      $(elem).attr('href', $(elem).attr('href').replace('none', year[1]));
  });
});

这将迭代SPAN标记下的每个A标记并从每个父标记中获取类,搜索这些标记以获取数字并替换“下一个”部分。

更新:为您切换到前缀年份的案例添加了评论。

更新2:现已测试并正常工作(通常使用Prototype *叹气*)。