Чему-то нравится jQuery.toggle (булевская переменная), существуют?

Я пишу что-то подобное следующему коду много. Это в основном переключает элемент на основе некоторого условия.

В следующем искусственном примере условие "Если agree флажок проверяется и name поле не пусто".

$("button").click(function() {
  if ($("#agree").is(":checked") && $("#name").val() != "" ) {
    $("#mydiv").show();
  } else {
    $("#mydiv").hide();
  }
});

Мне жаль, что не было своего рода функции jQuery, которая будет работать как это.

$("button").click(function() {
  var condition = $("#agree").is(":checked") && $("#name").val() != "" );
  $("#mydiv").toggle(condition);
});

Есть ли там что-то вроде этого? Или есть ли другие пути помимо первого примера, который сделает это в меньше if-else-ish путь?

65
задан jessegavin 5 March 2010 в 17:30
поделиться

3 ответа

Хорошо, я идиот, и мне нужно RTM, прежде чем я буду задавать вопросы.

jQuery.toggle () позволяет сделать это из коробки.

$("button").click(function() {
  var condition = $("#agree").is(":checked") && $("#name").val() != "" );
  $("#mydiv").toggle(condition);
});
84
ответ дан 24 November 2019 в 15:29
поделиться

Вы можете написать функцию сами.

function toggleIf(element, condition) {
    if (condition) { element.show(); }
    else { element.hide(); }
}

Тогда используйте ее так:

toggleIf($("button"), $("#agree").is(":checked") && $("#name").val() != "");
5
ответ дан 24 November 2019 в 15:29
поделиться

Во-первых, давайте посмотрим, правильно ли я понимаю, что вы хотите сделать ... Вы хотите чтобы посмотреть состояние флажка (установлен или нет) и скрыть или показать второй div в зависимости от статуса этого значения.

Определите этот стиль:

.noDisplay {
    display:none;
}

Используйте этот JavaScript:

$("button").click(function() {
  $("#mydiv").toggleClass("noDisplay", $("#name").val() == "");
});

Документацию по jQuery по нему можно найти здесь: http://api.jquery.com/toggleClass/

8
ответ дан 24 November 2019 в 15:29
поделиться
Другие вопросы по тегам:

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