jQuery删除具有非标准id字符的表行

时间:2010-12-07 23:39:58

标签: jquery html-table

我正在尝试使用jQuery这样删除表行

function removeTableRow(trId){
    $('#' + trId).remove();
}

但是,如果id包含“%”,“^”,“&”,“,”等字符,则无效。

你知道有没有解决这个问题?

5 个答案:

答案 0 :(得分:16)

我相信原因可以在这里找到:What are valid values for the id attribute in HTML?

然而,除了明显的(改变你的ids)之外,我不太确定一个解决方法

答案 1 :(得分:12)

HTML 4.0 ID不能包含这些字符and be valid at the same time

  

ID和NAME类型的属性值   必须以范围内的字母开头   可以跟随A-Z或a-z   字母(A-Za-z),数字(0-9),   连字符(“ - ”),下划线(“_”),   冒号(“:”)和句号(“。”)。这些   值区分大小写。

如果必须,可以试试这个:

function removeTableRow(trId) {
    $(document.getElementById(trId)).remove();
}

我建议修复HTML。

答案 2 :(得分:8)

我不建议在id字符串中使用这些字符。但是,如果您认为有必要,则需要使用\\来转义选择器中的字符。

示例:http://jsfiddle.net/NuWSp/

<table>
    <tr id="b%b">
        <td>hello</td>
    </tr>
    <tr>
        <td>world</td>
    </tr>
</table>


function removeTableRow(trId){
    $('#' + trId).remove();
}

removeTableRow( "b\\%b" );

答案 3 :(得分:4)

如果在许多表中有多行要通过其他属性(如类或组)删除它们,那就更好了。

以下是如何删除via group属性的示例:

$("table tr[group='"+groupname+"']").remove();

我希望这会有所帮助。

答案 4 :(得分:0)

我不确定它是否有用,但你可以尝试一下

var id = "id%#&hh";
$("tr").each(function(){
    if($(this).attr("id") == id){
        $(this).remove();
        return;
    }
});