JQuery - Запустить функцию, если значение элемента - "Активно"

У меня есть кнопка с reflection класса. Когда документ загружен, я устанавливаю значение для этого элемента для disabled. Затем я хочу запустить функцию только в том случае, если значение установлено на active.

$(document).ready(function() {
 $(".reflection").val("Disabled");

 $(".reflection").click(function () {
 $(".reflection").val("Active");
 });

 if ($(".reflection").val("Active") {
 if(e.clientX < width / 2) {
 croquis.fillLayerRect(colors[Math.floor(Math.random() * 5)], (e.clientX + (2 * (width/2 - e.clientX))), e.clientY, brush.getSize(), brush.getSize());
 }
 else {
 croquis.fillLayerRect(colors[Math.floor(Math.random() * 5)], (e.clientX - (2 * (e.clientX - width/2))), e.clientY, brush.getSize(), brush.getSize());
 }
 }
});

Когда я обновляю браузер, функция if($(".reflection").val("Active") немедленно активируется. Функция работает, даже если я установил значение для disabled. Я также не .relection на .relection.

2 ответа

Эта часть вашего кода неверна (а не только недостающая закрывающая скобка):

if ($(".reflection").val("Active")) {

Фактически он устанавливает значение "Актив", и все условие всегда оценивается как true. потому что метод val() возвращает исходный объект элемента, который является правдивым, и именно поэтому ваш код в операторе if всегда выполняется, а также нежелательный параметр для значения "Активный".

Ты нуждаешься в этом:

if ($(".reflection").val() === "Active") {


Ваш код будет запускаться только при загрузке страницы, так как проверка, которую вы делаете для активного, не запускается ничем другим.

Если вы попробуете что-то вроде этого:

$(document).ready(function() {
 $(".reflection").val("Disabled");

 $(".reflection").click(function () {
 $(".reflection").val("Active");
 $(document).trigger('customTrigger');
 });


 $(document).on('customTrigger ready', function() {
 if ($(".reflection").val() == 'Active') {
 if(e.clientX < width / 2) {
 croquis.fillLayerRect(colors[Math.floor(Math.random() * 5)], (e.clientX + (2 * (width/2 - e.clientX))), e.clientY, brush.getSize(), brush.getSize());
 }
 else {
 croquis.fillLayerRect(colors[Math.floor(Math.random() * 5)], (e.clientX - (2 * (e.clientX - width/2))), e.clientY, brush.getSize(), brush.getSize());
 }
 }
 });
});

Затем проверка будет активирована, когда документ будет готов, а также при щелчке .reflection.

Изменение: я предполагаю, что кнопка , потому что элемент

licensed under cc by-sa 3.0 with attribution.