2011-06-28 4 views
0

В JQuery, вы можете сделать что-то вроде этого: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.

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

+0

StackOverflow не является функцией-запроса на сайте. Идите и укажите ошибку, если вы хотите эту функцию. –

+0

Я думаю, что это разумный вопрос. – jAndy

+0

это не запрос функции. Я просто спросил, есть ли такая возможность. –

ответ

1

Посмотрите это chainable iif плагин от Ben Alman.

Пример

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

Другой способ, как комментатор на пост выше объясняет here

Пример

$(this)[$(this).hasClass("myClass")?"hide":"show"](); 
1

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

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

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

Demo: http://jsfiddle.net/L8ZaP/

1

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

function f(b) { 
    return $("<input></input>") 
     .addClass("test")    
     .attr("disabled", b ? true : false) 
     .addClass(b ? "example" : "") 
     .val("test"); 
} 
+0

, но как насчет '.addClass (" example ")'? –

+0

@Alon, Что не так в addClass? В моем примере это выглядит так: 'addClass (b?" Example ":" ")' – Karolis

Смежные вопросы