我在表格行中列出了page with a lot of hrefs。用户可以根据选择隐藏/显示表行。我想暂时将重复项的href更改为纯文本。
我的想法是做一个
$('a').each(function() {
});
然后在每个元素中,使用nextUntil方法将任何链接更改为等于this.href的文本。但是,当用户选择隐藏/显示不同的选择时,我该怎么办?如何根据新过滤器刷新链接并隐藏重复项?
我想我可以刷新页面,但这不会那么性感。
答案 0 :(得分:2)
我不完全理解您的问题,但看看这是否符合您的要求:
( function( global )
{
var $ = global.jQuery,
uniqueHREFs = {};
$( function()
{
var $matrixTable = $( '#matrix' ),
$matrixTableChildren = $matrixTable.children().detach();
$matrixTableChildren.find( 'a' ).each( function()
{
var $this = $( this ),
HREF = $this.attr( 'href' );
if( typeof uniqueHREFs[HREF] !== 'undefined' )
{
$this.replaceWith(
$( '<span>' ).addClass( 'duplicate-link-replacement' ).html( $this.html() )
);
}
else
{
uniqueHREFs[HREF] = true;
}
} );
$matrixTable.append( $matrixTableChildren );
} );
}( window ) );
它会迭代表中的所有链接,并存储它之前未见过的每个HREF。当它遇到它之前看到过的那个时,它会用一个duplicate-link-replacement
类的跨度替换它,并且链接以前具有相同的HTML。