Ссылка NullReferenceException или Object, не установленная на экземпляр объекта, возникает, когда объект класса, который вы пытаетесь использовать, не создается. Например:
Предположим, что у вас есть класс с именем Student.
public class Student
{
private string FirstName;
private string LastName;
public string GetFullName()
{
return FirstName + LastName;
}
}
Теперь рассмотрим другой класс, в котором вы пытаетесь получить полное имя учащегося.
public class StudentInfo
{
public string GetStudentName()
{
Student s;
string fullname = s.GetFullName();
return fullname;
}
}
Как видно из вышеприведенного кода, оператор Student s - объявляет только переменную типа Student, обратите внимание, что класс Student не создается в этой точке. Следовательно, когда выполняется выполнение инструкции s.GetFullName (), она выкинет исключение NullReferenceException.
Вам нужно избежать квадратных скобок, чтобы они не учитывались как селектор атрибутов. Попробуйте следующее:
alert($("#something\\["+id+"\\]").parent().parent().attr("id"));
См. Специальные символы в селекторах , в частности второй абзац:
Чтобы использовать любой из метасимволов ( такой как
blockquote>!"#$%&'()*+,./:;<=>?@[\]^``{|}~
) как буквальная часть имени, он должен быть экранирован двумя обратными косыми чертами:\\
. Например, элемент сid="foo.bar"
может использовать селектор$("#foo\\.bar")
. Спецификация CSS W3C содержит полный набор правил относительно правильных селекторов CSS . Также полезной является запись в блоге Матиаса Биненса в escape-последовательности символов CSS для идентификаторов .
Вы также можете сделать
$('[id="something['+id+']"]')
«Любой из метасимволов
!"#$%&'()*+,./:;<=>?@[\]^`{|}~
как буквальная часть имени, он должен быть экранирован с двумя обратными косыми чертами: \\
.
Например , элемент с id = "foo.bar", может использовать селектор
$("#foo\\.bar")
"[источник: jquery doc ], а элемент с id =" foo [ bar] "(даже если он недействителен для W3C, но распознан JQuery), можно использовать селектор
$("#foo\\[bar\\]")
(Только один asnwer, как и многие другие, но все вместе:))
Вы можете избежать их с помощью \\
, или вы можете сделать что-то вроде этого ...
$(document.getElementById("something[" + id + "]"))
Квадратные скобки имеют особое значение для селекторов jQuery , специальные фильтры атрибутов.
Просто выйдите из них, и он найдет ваш элемент в порядке
$( "#something\\[" + id + "\\]" )
Идентификатор не может включать квадратные скобки. Это запрещено спецификацией .
Некоторые браузеры могут исправить ошибки и справиться, но вы должны исправить ваши данные вместо того, чтобы пытаться справиться с плохими данными.
id
s не name
s, а большинство библиотек обработчиков форм используют подсчет для итерации, хотя несколько элементов управления с тем же именем, а не специальные соглашения об именах или гадание.
– Quentin
23 April 2013 в 05:59
name
не является маркером NAME
.
– Quentin
23 April 2013 в 16:25