В jQuery имеет ли смысл добавлять контекст селектора при указании идентификатора? - PullRequest
0 голосов
/ 16 ноября 2010

Я нашел этот фрагмент кода в плагине jQuery:

$("#"+id,$t.grid.bDiv).css("display","none");

Второй параметр $() меняет контекст поиска, верно?Имеет ли смысл включать его, поскольку строка уже ищет идентификатор?Разве jQuery не ищет весь документ при указании идентификатора?

ОБНОВЛЕНИЕ:

@ casablanca - вы уверены, что он просто вызывает собственный метод getElementById ()?Потому что я изменил эту строку на document.getElementById('id').style.display = "none", и производительность стала значительно быстрее (так как эта строка находится внутри цикла).Кстати, я тестировал IE8.

Ответы [ 2 ]

2 голосов
/ 16 ноября 2010

Кажется необходимым. Но я все равно провел быстрый тест здесь . Вывод: jQuery (неудивительно) не заботится о том, уникальна ли ваша #id или нет. В коде:

alert($("#test", ".test2").html());

Возвращает в пределах test2 , что правильно, и если мы введем:

alert($("#test").html());

т.е.. без контекста возвращает в пределах test1

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

Спасибо за этот вывод. Я думаю, что я бы включил это в разработку плагинов.

1 голос
/ 16 ноября 2010

Нет, это совсем не помогает.Если вы укажете идентификатор, элемент будет получен напрямую с помощью собственного метода document.getElementById, который не требует никакого контекста и в любом случае очень быстрый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...