jQuery собирает 2 точки данных, хотя назначается только одна - PullRequest
2 голосов
/ 14 июля 2011

Быстрый вопрос по .data() в jQuery: моя переменная "valone" попадает в раскрывающееся меню в некотором HTML-коде для значения "данные-все" в раскрывающемся списке, а затем вставляет его в уравнение jQuery. Но он также, похоже, получает значение "option option" из выпадающего списка и каким-то образом включает его в математические вычисления, хотя я не указываю это для этого ...

var valone = $('#os0 option:selected').data('whatever');

Я что-то упустил в этой .data() функции? Или у меня есть что-то лишнее, что не нужно? (У меня есть полный JQuery и HTML ниже.)

JQuery

$(document).ready(function(){
var valone = $('#os0 option:selected').data('whatever');
var valtwo = $('#os1').val();
var valthree = $('#os2').val();
var total = ((valone * 1) * (valtwo * 1) * (valthree * 1));
$('.calc').each(function(){
if($(this).val() != '')
{
total += parseInt($(this).val());
}
});

HTML

<select style="width: 190px;" class="calc"
name="os0" id="os0" type="text">
<option value="250" data-whatever="5">250
</option>
<option value="500" data-whatever="6">500 </option>
<option value="1000" data-whatever="7">1000
</option>
<option value="2000" data-whatever="8">2000
</option>
<option value="5000" data-whatever="9">5000
</option>
</select>

Любая помощь или совет будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 14 июля 2011

.data возвращает правильное значение. Проблема возникает с этим куском:

$('.calc').each(function(){
    if($(this).val() != '')
    {
        total += parseInt($(this).val());
    }
});

Переменная total, вычисленная выше этой точки - это то, что вы ожидаете. .each снова выполняет итерацию по каждому элементу select и добавляет выбранное значение к итогу.

0 голосов
/ 14 июля 2011

Отвечая на ваш вопрос, вы ничего не упустили.Данные хранят одну вещь, значение, установленное для нее, либо жестко закодированное значение в атрибуте элемента, либо значение, установленное с помощью jquery.Какой смысл делать valone * 1, а не просто valone?Вы слишком усложняете это.Это должно быть

var total = valone * valtwo * valthree;

или

var total = (valone * valtwo) * valthree`; //valone will be multiplied with valtwo first before multiplying that total with valthree

В зависимости от того, что вы рассчитываете.

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