Указание объекта с помощью octothorpe (#) в JQuery - PullRequest
1 голос
/ 24 марта 2011

Я однажды изучаю JQuery и у меня есть вопрос о синтаксисе октоторпа.

Я знаю, что # можно использовать для указания идентификатора объекта.

Пример:

Объект HTML

<div id="myDiv">...</div>

Оператор JQuery с использованием #

...

    $("#myDiv").hide();

...

Однако я заметил, что могу выполнить то же самое безс использованием #.

Оператор JQuery без использования #

...

    $(myDiv).hide();

...

Я предпочитаю синтаксис, который не включает в себя кавычки и октоторпе, но я не уверен, если это будет считаться плохой практикой / привычкой.

Должен ли я смириться с этим и придерживаться синтаксиса octothorpe или это действительно вопрос предпочтений?

Ответы [ 5 ]

2 голосов
/ 24 марта 2011

Это была бы очень плохая практика и крайне ненадежный метод обращения к элементам DOM.

Возьмите следующий пример:

var myDiv = 'blahblahblah';

$(myDiv).hide();

Это будет переводиться в:

$('blahblahblah').hide();

Это не то, что вам нужно.

$('#myDiv').hide(); всегда будет работать.

Это также нестандартная традиция, когда идентификаторы элементов представляются в области JavaScript;так что не надейтесь на это!

1 голос
/ 24 марта 2011

второй метод, который вы показываете, будет использоваться, если у вас есть переменная, установленная на div, например

var myDiv = $('#myDiv');

или

var myDiv = '#myDiv';
1 голос
/ 24 марта 2011

Ваш более поздний оператор работает только потому, что у вас есть переменная myDiv, или потому что вы находитесь внутри оператора with, или что-то в этом роде. Это не будет работать в нормальных условиях. Таким образом, чтобы ответить на ваш вопрос, вам нужно все время использовать первый синтаксис ... если только у вас нет такой переменной, как:

var myDiv = document.getElementById("myDiv");

или

var myDiv = "#myDiv";

О, и я почти забыл: некоторые браузеры эффективно заключают ваш код в оператор with; Я забыл, какие именно браузеры, но я думаю, что IE - единственный, кто это делает. Таким образом, у вас может не быть оператора var или with, но за кулисами ваш браузер добавляет его (что означает, что ваш код будет работать только в этом браузере, а не в других).

0 голосов
/ 24 марта 2011

AFAIK, добавление myDiv, как в последнем примере, зависит от нюансов браузера и может сломаться в некоторых браузерах.

Еще одна проблема, которую я понимаю, заключается в том, что это может привести к конфликтамесли когда-нибудь где-нибудь внизу кода вы фактически определяете переменную var myDiv = "foo"; или что-то еще.По крайней мере, с синтаксисом #myDiv вы явно хотите выбрать что-то по ID.

0 голосов
/ 24 марта 2011

хммм, пропуская # и кавычки ломает селектор jQuery на моем компьютере ... Я хотел бы просмотреть источник на вашей странице и убедиться, что ваш браузер не использует кэшированную версию страницы с "#" все еще в код.

Насколько я понимаю, $ (mydiv) выберет любые теги в вашем документе, из которых, вероятно, нет ни одного = D

Andy

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