Цитата:
|
Цитата:
И при чем тут jQuery непонятно. getElementsByTagName тоже возвращает коллекцию в любом случае |
Да динамические языки здесь ни при чем. В случае, когда работа идет с коллекцией элементов, что в jQuery, что просто в JavaScript, мы как бы сразу в голове держим вариант: когда коллекция пуста, тело цикла не выполнится. Но когда точно знаешь, что работаешь с одним элементом, этот вариант вылетает из головы, вспоминается это в последний момент, когда уже больше не знаешь в чем может быть ошибка.
Я несколько раз встречал в кодах коллег вообще не нужные и просто забытые цепочки на jQuery. Когда писал свой диплом, то постарался хоть как-то избавится от этой проблемы, разделив способы работы с одним элементом и с коллекцией: $("идентификатор").remove(); // если элемент не существует, будет ошибка. $.tag("имя_тега").each("remove"); // выполнить метод remove для каждого найденного элементаА проверять существование элементов не так уж часто и нужно, в большинстве случаев достаточно проверить наличие какого-то корневого элемента, а с дочерними уже можно работать без проверок. |
я не говорил о проверках на существование. Я говорил, что если функция возвращает то массив, то элемент, то ничего, то нужно после каждого вызова проверять какой из вариантов мы имеем
т.е. ты про то, что неплохо бы иметь функцию, которая возвращает коллекцию и функцию, возвращающую один элемент? С этим согласен, но непонятно "Но когда точно знаешь, что работаешь с одним элементом, этот вариант вылетает из головы, вспоминается это в последний момент, когда уже больше не знаешь в чем может быть ошибка.", слишком абстрактно для меня. Вроде если рассчитываешь всегда получать один элемент в этом месте и даже если функция возвращает коллекцию, то либо работаешь с первым элементом коллекции, либо записываешь первый элемент в отдельную переменную и работаешь с ней. |
Но когда точно знаешь, что работаешь с одним элементом, забываешь, что jQuery продолжает работать с коллекцией из одного элемента, и ошибки в поиске элементов становятся не очевидными, не явными.
Вот пример из темы: $("div#" + sID).text(data);Кажется, какая тут вообще может быть ошибка? Я пока заметил, что автор не закрыл теги, успел посмотреть на все 3 post-запроса в фаербаге, вывел алертом все идентификаторы внутри each, а только потом уже проверил, находит ли эти элементы jQuery. Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
$1("div#" + sID).text(data); т.е. $ всегда возвращает массив, а $1 - или один элемент или null |
В таком случае, придется создавать одноименные методы, для работы с коллекцией.
|
Часовой пояс GMT +3, время: 10:00. |