Заявления об условиях асинхронности jQuery - PullRequest
0 голосов
/ 28 июня 2011

В jQuery вы можете сделать что-то вроде этого:

function f(b) { 
    return $("<input></input>")
        .addClass("test")
        .if(b, function() {
            $(this).attr("disabled", true).addClass("example");
        })
        .val("test");
}

вместо:

function f(b) {
    var input = $("<input></input>").addClass("test");

    if (b) {
        input.attr("disabled", true).addClass("example");
    }

    return input.val("test");
}

?

На самом деле это просто синтаксический сахар.Хотя полезный.Особенно при разработке больших приложений Ajax.

Планируется ли эта функция для следующих версий или что-то в этом роде?

Ответы [ 3 ]

1 голос
/ 28 июня 2011

Нет, нет "условного" метода или чего-то еще. Я не думаю, что подобный метод превратит это в ядро, это похоже на излишество, не так ли? Пример:

function f( b ) {
    return $( '<input>', {
        'class':    'test',
        disabled:   !!b,   // alternate: b === 'something' ? true : false
        value:      'test'
    });
}

Это просто согнет эту переменную b в логическое значение и передаст ее disable attribute. Я думаю, вы можете создать аналогичную конструкцию во всех случаях, когда такой метод, как .if(), может быть полезен.

Демо : http://jsfiddle.net/L8ZaP/

1 голос
/ 28 июня 2011

Я думаю, что это не выглядит хуже:

function f(b) { 
    return $("<input></input>")
        .addClass("test")            
        .attr("disabled", b ? true : false)
        .addClass(b ? "example" : "")
        .val("test");
}
1 голос
/ 28 июня 2011

См. Этот цепной iif плагин от Ben Alman.

Пример

$('div')
  .append( '1' )
  .iff( my_test, 'foo' )
    .append( '2' )
    .end()
  .append( '3' );

Другой способ - пояснить вышеприведенный пост здесь

Пример

$(this)[$(this).hasClass("myClass")?"hide":"show"]();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...