根据子内部文本选择元素

时间:2013-12-20 22:57:02

标签: javascript jquery jquery-selectors

我有一个脚本,可以在每列的顶部添加一个过滤字段。但是,有一个名为“Type”的列,我试图让它跳过。例如,在下图中,有一个带有pdf图标的类型字段。我正在尝试阻止将文本字段添加到此列。

这是剧本:

$(this).children("th,td").each(function()
        {
            if($(this).hasClass("ms-vh-icon") ||
            $(this).hasClass("ms-vh-group") )
            {
                // attachment + Group (SLN)
                tdset += "<td></td>";
            }
            else
            {
                // filterable
                tdset += "<td><input type='text' class='vossers-filterfield' filtercolindex='" + colIndex + "' placeholder='Filter...'/></td>";                 
            }

            colIndex++;
        }); 

This is what it looks like

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用此

找到包含该文本的锚点
if ($(this).find('a').text()=='Type')

但可能是文本中有空格所以你需要修剪或使用替换或正则表达式以确保你捕获它,例如

var $a=$(this).find('a'); // add empty to prevent null
if ($a.length && $a.text().replace('Type', '')!=$a.text())...

但是看过代码后,您似乎只能搜索#diidSortDocIcon

tdset='';
$(this).children("th,td").each(function(colIndex){
    if ($(this).find('#diidSortDocIcon').length || $(this).is('.ms-vh-icon, .ms-vh-group')){
        tdset += "<td>&nbsp;</td>";
    }else{
        tdset += "<td><input type='text' class='vossers-filterfield' filtercolindex='" + colIndex + "' placeholder='Filter...'/></td>";
    }
});

你也可以在每个中设置colIndex,而不是使用colIndex++而你没有设置tdset='';

http://jsfiddle.net/v7brU/2/