Javascript-confirm () внутри jquery.щелкните по функции()

у меня есть следующие

$("element").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
   confirm('Dialogue');
  }
});

но я хотел бы bool функцию подтверждения. Я уже пробовал

$("element").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
    var confirm=confirm('Dialogue');
    if (confirm==true) {
      alert('true');
    } else {
      alert('false');
    }
  }
});

но окно подтверждения не генерируется. Как я могу это сделать?

7 ответов


у вас есть несколько вопросов. Первая проблема заключается в том, что вы определяете переменную с именем confirm. Не хорошо! Переименуйте его в isGood или что-то еще.

другая ошибка вот здесь:

if (confirm=true) {

confirm=true - это присвоение, а не сравнение.

это должно быть

if (confirm==true) {

или просто

if (confirm) {

таким образом, ваш код будет чем-то вроде

var bar = "bar";
$("button").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
    var isGood=confirm('Dialogue');
    if (isGood) {
      alert('true');
    } else {
      alert('false');
    }
  }
});

if( !confirm('Are you sure you want to continue?')) {
                    return false;
   }

все комментарии о сравнении верны, однако причина, по которой диалоговое окно подтверждения не отображается, заключается в том, что вы стираете объект поля подтверждения.

изменить имя confirm var.

$(element).click(function() {
  var confirm1 = confirm('Dialogue');
  if (confirm1) {
    alert('true');
  } else {
    alert('false');
  }  
});

http://jsfiddle.net/xjGZj/

сравните это с этим, который не работает.

$(element).click(function() {
  var confirm = confirm('Dialogue');
  if (confirm) {
    alert('true');
  } else {
    alert('false');
  }
});

http://jsfiddle.net/xjGZj/1/


когда вы объявляете переменную в любом месте вашей функции, она автоматически "вытягивается" наверх как локальная переменная. Когда вы вызываете confirm как функцию, она сначала находит локальную переменную (которая еще не определена) и не поднимается по цепочке областей до window где функции жизни.

$("element").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
    var confirm=confirm('Dialogue');
    if (confirm==true) {
      alert('true');
    } else {
      alert('false');
    }
  }
});

это то же самое, что

$("element").click(function() {
  var foo=bar, confirm = undefined;
  if ( foo == "bar" ) {
  confirm=confirm('Dialogue');
  ...
});

вы можете 1) переименовать переменную, 2) вызвать window.confirm("Dialog") говоря, что вы хотите глобальную функцию вместо локальной переменной или 3) Просто поместите подтверждающий вызов внутри if

$("element").click(function() {
  var foo=bar;
  if ( foo == "bar" ) {
    if (confirm('Dialogue')) {
      alert('true');
    } else {
      alert('false');
    }
  }
});

попробовать

if (confirm) {
      alert('true');
    } else {
      alert('false');
    }

мой первоначальный, хотя ваша главная проблема лежит здесь

var foo=bar;
  if ( foo == "bar" ) {

что такое бар? Я полагаю, вы намеревались выполнить следующее задание var foo="bar"; что сделало бы оператор if оценить как true и выполнить диалог подтверждения.

кроме того, следующее является неточным

var confirm = confirm("dialog");
if (confirm=true)

просто использовать это:

if (confirm("dialog"))

добавить .confirm класс к элементу, затем в jQuery write..

$('.confirm').click(function() {

    return confirm("Are you sure?");

});