Фильтр Jquery показывает ошибочные результаты - PullRequest
0 голосов
/ 03 октября 2011

Я пытаюсь настроить фильтр с помощью jQuery. У меня будет определенное количество элементов div, каждое из которых имеет числовое значение (скажем, цену).

Код ниже работает нормально, пока вы не введете значение меньше 10. Затем вы получите результаты, которых там быть не должно. (введите 4 например)

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

http://jsfiddle.net/SUWxn/

<script>
function sortmebaby()
{
    var divList = $('#containerMonkey div[id^="monkey_"]');  

$.each(divList, function(index, value)
{
    console.log($(value).attr('xprice'));
    if ( $(value).attr('xprice') > $('#mankipower').val())
        $(value).hide();
    else
        $(value).show();
    //alert(index + ': ' + value);
});

}
</script>

<div id="containerMonkey">
    <div id="monkey_1" xprice="10">10</div>
    <div id="monkey_2" xprice="20">20</div>
    <div id="monkey_3" xprice="30">30</div>
    <div id="monkey_4" xprice="40">40</div>
    <div id="monkey_5" xprice="50">50</div>
</div>
<input type="text" name="mankipower" id="mankipower">
<input type="button" value="PUSH" onclick="sortmebaby()">

Спасибо!

1 Ответ

1 голос
/ 03 октября 2011

Условие в вашем выражении if сравнивает строки, а не целые числа, как вы ожидаете.Вы можете использовать parseInt для преобразования строк в числа:

var val1 = parseInt($(value).attr('xprice'), 10),
    val2 = parseInt($('#mankipower').val(), 10);
if(val1 > val2)
    $(value).hide();
else
    $(value).show();

Вот обновленный пример .

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