如何添加类取决于数据目标(Bootstrap)

时间:2016-02-29 02:26:23

标签: javascript jquery html twitter-bootstrap

基本上,我有一个这样的菜单:

 <a class="tab-feed-filter-switch active bound" href="sample.com/ALL"  data-target="#filter-fb">FACEBOOK</a>

 <a class="tab-feed-filter-switch active bound" href="sample.com/fb" data-target="#filter-all">All</a>

 <a class="tab-feed-filter-switch active bound" href="sample.com/ig" data-target="#filter-ig">ig</a>

我希望附加"?startDate=20160121&endDate=20160212"

之类的内容
  $("#appendHerf").click(function(){

   var href = $('a.tab-feed-filter-switch').attr('href') + '?startDate=20160121&endDate=20160212';

   $('a.tab-feed-filter-switch').attr('href', href);
});

上述方法的结果不正确:

   <a class="tab-feed-filter-switch active bound" href="sample.com/ALLl&?startDate=20160121&endDate=20160212"  data-target="#filter-fb">FACEBOOK</a>

 <a class="tab-feed-filter-switch active bound" href="sample.com/ALL&?startDate=20160121&endDate=20160212" data-target="#filter-all">All</a>

 <a class="tab-feed-filter-switch active bound" href="sample.com/ALL&?startDate=20160121&endDate=20160212 data-target="#filter-ig">ig</a>

我的例外情况如下:

   <a class="tab-feed-filter-switch active bound" href="sample.com/ALL&?startDate=20160121&endDate=20160212"  data-target="#filter-fb">FACEBOOK</a>

     <a class="tab-feed-filter-switch active bound" href="sample.com/FB&?startDate=20160121&endDate=20160212" data-target="#filter-all">All</a>

     <a class="tab-feed-filter-switch active bound" href="sample.com/ig&?startDate=20160121&endDate=20160212 data-target="#filter-ig">ig</a>

上面的方法在我的其他程序中运行正常,但因为插件为所有程序生成相同的类,它将所有的herf替换为单个重复的herf,我无法在html中更改它。

我正在考虑获取 date-target元素并添加新类来控制它,但我不确定这是否可行并且可能还有更好的替代解决方法问题。

这是我的最后一个问题,但它似乎无法解决我的问题:Append new path in all the a href URL

  

只有一个按钮,当我点击时,在我们得到的每个herf中附加startDate&amp; endDate。所以结果应该是 / fb / startDate&amp; endDate,/ All / startDate&amp; endDate ,但现在它就像当我点击按钮每个href替换为/ All / startDate&amp; ;结束日期即可。

2 个答案:

答案 0 :(得分:1)

啊,我看到了问题。问题是:

var href = $('a.tab-feed-filter-switch').attr('href') + '?startDate=20160121&endDate=20160212';

$('a.tab-feed-filter-switch').attr('href', href);

...为所有锚标记设置相同的href。你需要做的是使用jQuery提供的each()函数用它的相对href单独更新每个锚标记。用以下内容替换您的点击功能:

$("#appendHerf").click(function(){
    $('a.tab-feed-filter-switch').each(function(){
        var href = $(this).attr('href') + '?startDate=20160121&endDate=20160212';
        $(this).attr('href', href);
    });
});

答案 1 :(得分:1)

  

你说添加类取决于数据目标。但是你想要使用的地方   它?

<强> HTML

let months = ["Feb", "Feb", "Mar", "Mar", "Mar", "Mar", "Mar"]
var workingMonth = ""

let filteredMonths = months.map { month -> String in
    let result = month != workingMonth ? month : ""

    if month != workingMonth {
        workingMonth = month // There is a new month, so update the working month.
    }

    return result
}

print(filteredMonths)

<强>的jQuery

<a class="tab-feed-filter-switch active bound" href="sample.com/ALL"  data-target="#filter-fb">FACEBOOK</a>

<a class="tab-feed-filter-switch active bound" href="sample.com/fb" data-target="#filter-all">All</a>

<a class="tab-feed-filter-switch active bound" href="sample.com/ig" data-target="#filter-ig">ig</a>

每个函数迭代所有匹配的标记并使用$("#appendHerf").click(function(){ $('a.tab-feed-filter-switch').each(function(){ if($(this).attr('href').split("&")[1] == null){ newHref = $(this).attr('href') + '?startDate=20160121&endDate=20160212'; $(this).attr('href', newHref); } }); }); 属性,它的意思是只需要更改的当前标记。 在你的情况下,你在这里犯了错误。

<强>输出:

this