JQuery удалить строку таблицы с нестандартными символами id - PullRequest
23 голосов
/ 08 декабря 2010

Я пытаюсь удалить строку таблицы, используя jQuery, как это

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

Однако это не работает, если идентификатор содержит такие символы, как «%», «^», «&», «,» и т. Д. *

Знаете ли вы, есть ли способ обойти это?

Ответы [ 5 ]

16 голосов
/ 08 декабря 2010

Я полагаю, что причина может быть найдена здесь: Каковы допустимые значения атрибута id в HTML?

Однако я не настолько уверен в обходном пути, кроме очевидного(измени свой идентификатор)

12 голосов
/ 08 декабря 2010

Идентификаторы HTML 4.0 не могут содержать эти символы и быть действительными одновременно :

Значения атрибутов типа ID и ИМЯ должен начинаться с буквы в диапазоне A-Z или a-z и может сопровождаться буквы (A-Za-z), цифры (0-9), дефисы ("-"), подчеркивания ("_"), двоеточия (":") и точки ("."). Эти значения чувствительны к регистру.

Если нужно, вы можете попробовать это:

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

Я бы порекомендовал исправить HTML.

8 голосов
/ 08 декабря 2010

Я бы не советовал использовать эти символы в строке идентификатора. Однако, если вы считаете это необходимым, вам нужно использовать \\ для экранирования символа в селекторе.

Пример: 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" );
4 голосов
/ 13 апреля 2012

Лучше, если во многих таблицах будет несколько строк, чтобы удалить их через другой атрибут, такой как класс или группа.

Вот пример того, как удалить через атрибут группы:

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

Надеюсь, это поможет.

0 голосов
/ 08 декабря 2010

Я не уверен, что это сработает, но вы можете попробовать

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