if-else в каждом методе (jQuery)

Следующий код возвращает следующий результат:

0: 000,
1: 100,
2: 200,
...
40: 4000

Я хотел бы добавить if-else . var minValue === 100; var maxValue === 300 var minValue === 100; var maxValue === 300 и отображать только элементы со значением value.innerText <= minValue && value.innerText >= maxValue

Как я могу добавить его в этот код? + Как добавить функцию к этим элементам, например, что любой элемент, который удовлетворяет условию if, был функцией .click();

var labels = $('.st-weight-class').find('.filter-panel--option-list label');

labels.each(function (index, value) {
  console.log(index + ': ' + value.innerText);
});

Всего 3 ответа


Вы можете присоединить событие click внутри каждого метода и добавить условие

Попробуй это:

var labels = $('.st-weight-class').find('.filter-panel--option-list label');

var minValue = 100;
var maxValue = 300;

labels.each(function (index) {
    $(this).click(function() {
        if($(this).text()>=minValue && $(this).text()<=maxValue) {
            console.log(index + ': ' + $(this).text());
        }
    });   
});

Вы можете просто использовать filter

function getLabelsInRange( labels, minValue, maxValue) {
  return labels.filter( label => parseInt( label.innerText ) >= minValue && parseInt( label.innerText ) <= maxValue );
}

Затем он будет возвращать все метки, находящиеся внутри диапазона minValue & maxValue , используя

let matchingLabels = getLabelsInRange( labels, 100, 300 );

Я инвертировал ваше состояние, так как я считаю, что вы хотите, чтобы все в диапазоне minValue >= x >= maxValue


var minValue === 100; var maxValue === 300; 

Это недопустимое назначение javascript. Возможно, вы хотели сказать:

var minValue = 100; var maxValue = 300; 

Что мешает вам вводить его прямо, как вы определили в своем вопросе?

if(value.innerText<minValue || value.innerText>maxValue) {
    console.log(index + ': ' + value.innerText);
}

 var labels = $('.st-weight-class').find('.filter-panel--option-list label'); var minValue = 100; var maxValue = 300; labels.each(function (index, value) { if(value.innerText<minValue || value.innerText>maxValue) { console.log(index + ': ' + value.innerText); } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div class='st-weight-class'> <div class='filter-panel--option-list'> <label>10</label> <label>50</label> <label>70</label> <label>90</label> <label>100</label> <label>200</label> <label>250</label> <label>300</label> <label>350</label> <label>400</label> <label>650</label> <label>900</label> </div> </div> 


Есть идеи?

10000