jQuery: о логических значениях в управляющих структурах

У меня есть этот код:

  console.log($(domElem).attr('selected'));

  console.log(typeof $(domElem).attr('selected'));

  if($(domElem).attr('selected') == true);
  {
      alert("there is one element selected");
  }

Результат:

false
boolean
false
boolean
false
boolean
...

Я ожидал, что «это выбранный элемент» никогда не показывался, но он отображается столько раз, сколько элементов есть.

jQuery 1.3.2

Есть идеи?

Хавьер


person ziiweb    schedule 10.04.2012    source источник
comment
Итак, если это всегда ==false, это нормально?   -  person neoascetic    schedule 10.04.2012
comment
попробуйте использовать ===, прочитайте здесь, почему: stackoverflow.com/questions/359494/   -  person Henrik Andersson    schedule 10.04.2012
comment
@neoascetic, я тебя не понимаю..   -  person ziiweb    schedule 10.04.2012
comment
@limelights, я пробовал, но проблема та же, в этом случае у меня работает как == ..   -  person ziiweb    schedule 10.04.2012
comment
у тебя есть ; после состояния тоже...   -  person Henrik Andersson    schedule 10.04.2012


Ответы (2)


Ставим точку с запятой после условия как:

if($(domElem).attr('selected') == true);  
 {
       alert("there is one element selected");  
 } 

завершает оператор «if» и выглядит так же, как если бы вы написали:

if($(domElem).attr('selected') == true){}; 
alert("there is one element selected");

изменить его на:

if($(domElem).attr('selected') == true)
{
       alert("there is one element selected");
}
person Mark Schultheiss    schedule 10.04.2012

На этот вопрос сложно ответить, так как немного неясно, чего вы хотите достичь.

Если он просто проверяет, выбран ли элемент списка или нет, я бы сделал это так:

HTML-код (да, я взял его из w3schools, извините! почему это плохо):

<select id="selectedLIST">
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
    <option value="mercedes">Mercedes</option>
    <option value="audi">Audi</option>
</select> 

jQuery

var list = $('#selectedLIST');
$(list).change(function(){
    $.each(list.children(), function(index, value){
        if($(value).attr('selected') === true){
            alert("there is one selected");
        }
    });
});

Это создаст список, который, когда пользователь выбирает новый элемент в списке, создаст всплывающее окно с сообщением «это один выбран» на основе атрибута «выбрано» в теге HTML.

Кроме того, установка точки с запятой после оператора if "завершает" этот оператор.

Кроме того, если вы забудете поставить точку с запятой, JS-движок будет вставлять точку с запятой.

person Henrik Andersson    schedule 10.04.2012