2016-05-21 3 views
1

Я пытаюсь добавить класс к кнопке с событием onClick. Событие onClick запускает всплывающее окно alert, которое сообщает пользователю, что нужно установить флажок. После того как вы установите флажок, он отключает onClick: $("#continue").prop('onclick',null).off('click'); После onClick отключен, я хочу добавить class на кнопку один раз кликаем:jQuery - Невозможно добавить класс к кнопке с событием onClick

//Updated JS 
jQuery(function($) { 
if ($("#continue").hasClass("selected")) { 
    $(this).addClass('active'); 
} 
$('#button').click(function(){ 
    $("#continue").addClass('selected'); 
    $("#continue").prop('onclick',null).off('click'); 
}); 
}); 

//Button HTML 
<a id="button" href="javascript:void(0)">Pick me</a> 
<a id="continue" href="javascript:void(0)" onclick="showError()">Continue</a> 

Но не class добавляется. Не уверен, что происходит.

ответ

2

Может быть, вы можете вызвать функцию для проверки, если элемент имеет необходимый класс вроде этого:

function validate(element) { 
 
    if ($(element).hasClass('selected')) { 
 
    $(element).addClass('active'); 
 
    } else  { 
 
    alert("this is an error"); 
 
    } 
 
} 
 

 
$(function() { 
 
    $('#button').click(function() { 
 
    $("#continue").addClass('selected'); 
 
    }); 
 

 
});
.selected { 
 
    color: red; 
 
} 
 
.active { 
 
    color: green; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<a id="button" href="javascript:;">Pick me</a> 
 
<a id="continue" href="javascript:;" onclick="validate(this)">Continue</a>

+0

См обновленный вопрос. Я добавил точно, что у меня есть – Garrettj944

+0

, пожалуйста, вставьте фрагмент со всем кодом. Имейте в виду, что оповещения, реквизиты и т. Д. Останавливают выполнение javascripts до тех пор, пока пользователь не отклонит предупреждение. – Alfredo

+0

Вот мой код http://pastebin.com/s5mKxTaA Это не нормальное предупреждение, его настраиваемый – Garrettj944

1

Вы должны написать $(this) вместо $ это

$('#button').click(function(){ 
    $this.addClass("active"); 
}); 
+0

Обертка 'this' в круглых скобках заставила его работать. '$ (Это) .addClass ('активный')' – protoEvangelion

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