代码之家  ›  专栏  ›  技术社区  ›  Tigran Tokmajyan

获取<span>类并放入<a>属性jquery

  •  3
  • Tigran Tokmajyan  · 技术社区  · 16 年前

    我有这样的html。

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

    span.gallery-open-item year-icon-Yes 类,如果是这样的话,则取下一个类(本例为2010)并将其放置在 href 属性如下:

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

    我做了一些实验,但我不能把2010变成普通的javascript变量。 有什么想法吗?

    3 回复  |  直到 16 年前
        1
  •  1
  •   hurikhan77    16 年前

    这个怎么样:

    $('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标记,从每个父级获取类,搜索这些类中的数字并替换“next”部分。

    为您切换到前缀年份的情况添加了注释。

    现在测试和工作(通常使用原型*sigh*)。

        2
  •  2
  •   artlung    16 年前

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

    $('.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>
    
        3
  •  1
  •   wsanville    16 年前

    这里有一种方法。首先,我们选择 span 具有两个类的标记 gallery-open-item year-icon-Yes . 然后,对于每个类,我们将得到 跨度 a 标签在 跨度 设置所需的url。

    $(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;
                }
            }
        });
    });