2016-06-14 1 views
0

В последнее время я испытал некоторое странное поведение в jQuery. Там мой HTML код:jQuery возвращает prevObject вместо значения параметра

<select class="chosen-select"> 
    <option value="35" data-lat="50.054371" data-lng="14.486067">Praha 10, Záběhlická 84 (Hobby car)</option> 
    <option value="36" data-lat="49.186535" data-lng="16.604361">Brno, Nové sady 30 (ecmarket.cz)</option> 
</select> 

есть мой JQuery код:

$('.chosen-select').on('change', function(evt, params) { 
    var currLat; 
    var currLng; 

    currLat = $('.chosen-select option:selected').attr('data-lat'); 
    currLng = $('.chosen-select option:selected').attr('data-lng'); 
    console.log($('.chosen-select option:selected').attr('data-lat')); 
    console.log($('.chosen-select option:selected').attr('data-lng')); 
    console.log($(currLat)); 
}); 

и есть журналы из консоли:

50.724499 
15.169286 
[prevObject: n.fn.init[1], context: document, selector: "50.724499"] 

Когда я посмотрел вокруг, я обнаружил, что мой селектор ошибочен, а его нет в DOM. Но

1) почему первые два журнала выглядят нормально?

  • Не правда ли, это немного странно?

2) как исправить это?

  • Пробовал код вызова в $ (document) .ready (function() {});

Спасибо за любую помощь или информацию ребята.

+1

Все выглядит хорошо для меня. [Вы увидите 'prevObject', когда вы не получили соответствие] (http://stackoverflow.com/questions/19697495/what-is-prevobject-and-why-is-my-selector-returning-that) , jQuery всегда даст вам объект, даже если ничего не соответствует. Это будет пустая коллекция с оберткой jQuery. –

+0

Я уверен, что вы имели в виду 'console.log (currLat)', а не 'console.log ($ (currLat))'. Зачем вам передавать строку '" 50.724499 "' в jQuery ??? – Bergi

+0

Селектор jQuery всегда возвращает объект, даже если значение, которое вы использовали для селектора, не возвратило никаких элементов. Это то, что вы видите на консоли, так как нет элемента для '$ ('50.054371')' –

ответ

0

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

Правильный код должен быть:

$('.chosen-select').on('change', function(evt, params) { 
    var currLat; 
    var currLng; 

    currLat = $('.chosen-select option:selected').attr('data-lat'); 
    currLng = $('.chosen-select option:selected').attr('data-lng'); 
    console.log($('.chosen-select option:selected').attr('data-lat')); 
    console.log($('.chosen-select option:selected').attr('data-lng')); 
    console.log(currLat); 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^