Carduelis
@Carduelis
Web-developer, front-end, js, less

Как в jQuery получить true/false из списка тегов удовлетворяющих какому-нибудь условию?

Не знал как сформулировать все в один вопрос, поэтому напишу пример:
<ul id="true">
<li param="red"></li>
<li param="red"></li>
<li param="red"></li>
</ul>
<ul id="false">
<li param="red"></li>
<li param="blue"></li>
<li param="red"></li>
</ul>

$('#true li').each(function(){
// должно вывести true
});
$('#false li').each(function(){
// должно вывести false
});


Нужно, чтобы скрипт смотрел на атрибуты тегов, и если они все совпали - выдавать true. Если хотя бы один из них отличается, то false
  • Вопрос задан
  • 2292 просмотра
Решения вопроса 1
function doesParamsMatch(list, param) {
    var params = Array.prototype.map.call(list, function (elem) {
        return elem.getAttribute(param);
    });
    var result = Array.prototype.reduce.call(params, function (prev, current) {
        return (prev === current) ? prev : false;
    });
    return result !== false;
}

var list1 = document.querySelectorAll('#true li');

var list2 = document.querySelectorAll('#false li');

console.log(doesParamsMatch(list1, 'param')); // true
console.log(doesParamsMatch(list2, 'param')); // false
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol Куратор тега JavaScript
нельзя просто так взять и загуглить ошибку
var param_val = $('#true li:first').attr('param');
if($('#true li').length == $('#true li[param='+param_val+']').length ) 
{ 
    alert('true'); 
}


jsfiddle.net/mosoa3uj
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы