2014-02-18 3 views
0
if (!errorHasHappened) { 
    info.show(); 
    error.hide(); 
} else { 
    info.hide(); 
    error.show(); 
} 

Я не могу использовать переключатель.Как скрыть этот javascript?

Я попытался передать функцию show или скрыть переменную, а затем выполнить ее, но по какой-то причине она не работала, и я получил ошибку JS.

+1

Это выглядит примерно так же упрощены как он может получить. – Cerbrus

+7

* «Я не могу использовать toogle». * Ну, это называется 'toggle', но почему бы и нет? Вы не используете jQuery 1.2, не так ли? –

+2

Слишком плохо, похоже, что он может использовать хороший toogle –

ответ

3

Вы могли бы попробовать что-то вроде этого:

info[errorHasHappened?'hide':'show'](); 
error[errorHasHappened?'show':'hide'](); 

Но это единственный вариант, который я могу думать, что делает код короче.

Этот код не упрощает обслуживание.

+0

это точка ;-) этот код написан для людей, которые знают JS, и имеет смысл использовать предварительный JS, если у вас есть шанс. – IAdapter

7

Вы могли бы сделать это, но если утверждение намного яснее.

И почему бы не использовать .toggle, который предназначен для такого случая?

info[errorHasHappened ? 'hide' : 'show'](); 
error[errorHasHappened ? 'show' : 'hide'](); 
+2

Отправляйте тот же ответ в течение нескольких секунд друг за другом, и первый получает все upvotes:/ Конкуренция жестока на SO: P (Тем не менее, +1 за быстрейшего стрелка) – Cerbrus

+0

что делать, если я вызываю его с ошибкойHasHappened = false и позже с errorHasHappened = false. как будет работать переключение? – IAdapter

1

Если сделать код короче ваша цель:

errorHasHappened?(info.hide(),error.show()):(info.show(),error.hide()); 

BTW, делая код короче!==упрощения кода. IMO atleast ..

1

Все, что имело бы смысл, это переключить их вокруг, чтобы предотвратить!

if (errorHasHappened) { 
    info.hide(); 
    error.show(); 
} else { 
    info.show(); 
    error.hide(); 
} 
+0

Технически вы уменьшили код на один символ, но это действительно должен быть комментарий. – Cerbrus

+0

Это проще в обслуживании, так как вы можете легко пропустить! – Valdas

+0

Хотя это верно, это не изменяет тот факт, что этот ответ не отвечает на вопрос. – Cerbrus

1

Другой способ:

$("#error").toggleClass(className, errorHasHappened); 
$("#info").toggleClass(className, errorHasHappened); 
+0

Объедините 2 селектора jQuery. Поскольку ответ прямо сейчас, это больше кода. – Cerbrus

+0

Боюсь, я не могу объединить эти 2 селектора с моим ограниченным jquery experince. Я считаю, что сочетание 2 ** аналогичных ** селекторов будет иметь смысл. –

+0

'$ (" # error, #info ")' – Cerbrus

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