альтернатива javascript для ruby ​​.none? - PullRequest
0 голосов
/ 02 мая 2018

Как я могу выполнить итерацию и do something, если ни один не соответствует условиям. Для контекста в Ruby я могу сделать some_array.none?{|t| t == "something"} и вернуть логическое значение.

В js я пытаюсь перебрать все элементы с помощью [href] prop и сделать что-нибудь, если ни один из них не имеет класса "active"

$("[href]").each(function() {
    if (this.href == window.location.href) {
        $(this).addClass("active");
    }
});

Я делаю выше, чтобы стилизовать мои активные ссылки, но я хочу, чтобы одна из моих ссылок была активна, если ни одна из других не активна. Я новичок в JS, так что я уверен, что может быть лучший подход к этому.

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Не можете ли вы переместить условие селектора в селектор jQuery, а затем проверить длину селектора?

var selector = $("[href=" + window.location.href + "]");
selector.each(function() {
    $(this).addClass("active");
});

if(selector.length == 0) {
    $("[href='/snippets/new/]").addClass("active");
}
0 голосов
/ 02 мая 2018

Хорошо, так что я выполнил то, что хотел, но он немного хакерский и уродливый, поэтому все еще открыт для альтернатив, вот что я сделал

var counter = 0;
$("[href]").each(function() {
    if (this.href == window.location.href) {
        counter = +1;
        $(this).addClass("active");
    }
});

if (counter === 0) {
    $("[href='/snippets/new']").addClass("active");
}
...