Соответствует, когда элемент имеет несколько идентификаторов - PullRequest
4 голосов
/ 16 июня 2011

Я перебираю форму и показываю контент, который соответствует выбранным мной идентификаторам. Проблема в том, что некоторые div содержат более одного идентификатора, и в этом случае он перестает работать. Есть идеи? Спасибо.

Код Jquery:

$('#myForm').find('div').each(function() {
        var myId = $(this).attr('id');

        /* This will work */
        if (myId == "Select1"){
                $(this).removeClass("hideMe");
                $(this).addClass("showMe");
                }
        /* This does not work */
        else if (myId == "Select4"){
                $(this).removeClass("hideMe");
                $(this).addClass("showMe");
                }
        else{}

        }); 

HTML код:

<div class="hideMe" id="Select1">
<p>Some Content</p>
</div>

<div class="hideMe" id="Select2 Select3 Select4 Select5">
<p>Some Content</p>
</div>

Ответы [ 5 ]

10 голосов
/ 16 июня 2011

Не существует такой вещи, как "несколько идентификаторов".

https://developer.mozilla.org/en/XUL/Attribute/id

В соответствии со стандартом любые строковые данные в свойстве id считаются частью значения.

ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").

ссылка: http://www.w3.org/TR/REC-html40/types.html#type-name

Есть и другой способ! Вы можете иметь все виды имен классов, и вы можете использовать jQuery для захвата элемента по имени класса.

HTML

<div class="hideMe Select1">
<p>Some Content</p>
</div>

<div class="hideMe Select2 Select3 Select4 Select5">
<p>Some Content</p>
</div>

Javascript

$('.Select2')[0]

Часть [0] состоит в том, что когда вы получаете элементы по имени класса, может быть несколькими. Селектор jQuery возвращает массив, поэтому вы просто захватываете первый.

1 голос
/ 16 июня 2011

Недопустимо иметь несколько идентификаторов - браузер увидит id = "Select2 Select3 Select4 Select5" в виде одной строки, но эта строка будет недействительной, поскольку содержит пробелы.

Из типов данных HTMLspec: http://www.w3.org/TR/REC-html40/types.html#type-name

Вы должны использовать классы для этого, я думаю.

1 голос
/ 16 июня 2011

Вы не можете иметь несколько идентификаторов. Тем не менее, вы можете иметь несколько классов, если хотите.

0 голосов
/ 16 июня 2011

Элемент не должен иметь более одного уникального идентификатора, поэтому его фактически называют идентификатором: чтобы идентифицировать его по всем остальным.В любом случае, вам нужно проверить, содержит ли myId Select4, а не проверять равенство.

0 голосов
/ 16 июня 2011

идентификаторы уникальные , и элементы могут иметь только 1 идентификатор !

Вместо этого используйте несколько классов.

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