Групповой список элементов произвольным атрибутом с CSS [duplicate]

Другое решение состоит в том, чтобы выполнить код через последовательный исполнитель nsynjs .

Если базовая функция многозначна

nsynjs будет последовательно оценивать все обещания и ставить обещания результат в свойство data:

function synchronousCode() {

    var getURL = function(url) {
        return window.fetch(url).data.text().data;
    };
    
    var url = 'https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js';
    console.log('received bytes:',getURL(url).length);
    
};

nsynjs.run(synchronousCode,{},function(){
    console.log('synchronousCode done');
});

Если базовая функция не обещает

Шаг 1. Wrap с обратным вызовом в оболочку, совместимую с nsynjs (если у нее есть обещанная версия, вы можете пропустить этот тест):

var ajaxGet = function (ctx,url) {
    var res = {};
    var ex;
    $.ajax(url)
    .done(function (data) {
        res.data = data;
    })
    .fail(function(e) {
        ex = e;
    })
    .always(function() {
        ctx.resume(ex);
    });
    return res;
};
ajaxGet.nsynjsHasCallback = true;

Шаг 2. Вставить синхронную логику в функцию:

function process() {
    console.log('got data:', ajaxGet(nsynjsCtx, "data/file1.json").data);
}

Шаг 3. Выполнить функцию синхронно через nnsynjs:

nsynjs.run(process,this,function () {
    console.log("synchronous function finished");
});

Nsynjs будет оценивать все операторы и выражения шаг за шагом, приостанавливая выполнение в случае, если результат некоторой медленной функции не готов.

Дополнительные примеры здесь: https://github.com/amaksr/nsynjs/tree/master/examples

0
задан 4 August 2014 в 02:52
поделиться

2 ответа

Существует ли решение этого действительно зависит от вашей разметки.

Поскольку селекторы в основном статичны и не имеют переменных, нет способа использовать селектор для соответствия любому элементу с определенным значением атрибута на основе другого элемента (или его отсутствия) с тем же значением атрибута, не зная заранее. Если возможные значения для этого атрибута не могут быть определены, то нет чистого решения CSS.

Если для этого атрибута существует только конечный набор значений, и вы знали эти значения заранее, вы могли бы написать селектор для каждого возможного значения, но вам нужно будет жестко кодировать каждое из этих значений. Такой селектор будет построен с использованием псевдокласса :not() в сочетании с смежным комбинатором сиблов +, методом, который я использовал здесь здесь :

li:not([attribute_name='a']) + li[attribute_name='a'], 
li:not([attribute_name='b']) + li[attribute_name='b']

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

1
ответ дан Community 29 August 2018 в 01:16
поделиться

Я думаю, что это можно сделать, используя селектор nth-child ():

p:nth-child(2)
{
 background:#ff0000;
}

http://jsfiddle.net/davekerr/94Cgt/

-1
ответ дан hackerrdave 29 August 2018 в 01:16
поделиться
Другие вопросы по тегам:

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