jQuery не запускает щелчок, даже когда направлен на загрузку документа?

#php #javascript #jquery #html #css

#php #javascript #jquery #HTML #css

Вопрос:

Я сжимаю средство выбора цвета, так как не смог найти средство с нужной мне функцией (можно подумать, что к настоящему времени все возможные функции были бы включены, но я не смог найти ни одного, который поддерживал бы вывод RGBA с регулируемым альфа-уровнем), и у меня возникли проблемы с той частью скрипта, которая будет работать сзагружайте текущий цвет при запуске редактора. Я не буду утомлять вас всем кодом, я постараюсь придерживаться основ.

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

     $('.rgbapicker').each(function(){
        $(this).replaceWith(
            'This is all the display code, it's working fine.'
        )
        set_color('#' $(this).attr('name') ' ',$(this).val())
    });
  

Функция set_color принимает выбранную переменную, которая определяет, какой палитру цветов вы используете, и цвет, который преобразуется с помощью tinycolor.js — модифицированная версия, которая передает rgb alpha через функцию toRgb() (в отличие от передачи ее только в .Функция toRgbString()).

     function set_color(selected,color){
        var color = tinycolor(color).toRgb();
        $(selected '.disp_s_color_r').val(color.r); // This code
        $(selected '.disp_s_color_g').val(color.g); // Changes the
        $(selected '.disp_s_color_b').val(color.b); // Color selector
        $(selected '.disp_s_color_a').val(color.a); // Display
        var color = tinycolor(color).toHsl();
        console.log(selected ' - ' color.h ' - ' color.s ' - ' color.l);
        var e = new jQuery.Event("click");
        e.pageX = 180;
        e.pageY = 180;
        $('.colorbase').trigger(e);
  

Редактор использует изображение спектра hsl, на которое вы нажимаете, которое затем координирует движение мыши и выполняет математические вычисления, чтобы все это понять, это очень простой метод, и он отлично работает. Когда я нажимаю на редактор, он обновляется правильно (здесь ничего не написано), когда я нажимаю кнопку сброса, он запускает эту функцию и работает правильно (XY области выделения обновляется, выделяя выбранный вами цвет), но когда это загружается в этом начальном цикле, это не работает.не срабатывает. Функция set_color запускается и обновляет отображение в редакторе, но селектор не перемещается, и поскольку эта функция щелчка обновляет все предварительные просмотры и цвет, который записывается на (не скрытый) ввод, ничего из этого не обновляется.

Нет никакой разницы между первоначальным вызовом цикла после замены и вызовом кнопок сброса, я даже проверил события и обнаружил точные копии друг друга (я скопировал их в другую программу и запустил сравнение, они являются точными копиями). Я пробовал идеалы, опубликованные в других подобных сообщениях здесь (и в других местах при поиске проблемы в Google), включая то, что цикл имитирует нажатие кнопки сброса, но ничего не сработало.

Есть идеи? Я бы хотел просто заставить щелчок правильно срабатывать, иначе это будет кусок кода для имитации щелчка, который ничего не сделает, кроме увеличения размера скрипта (сейчас это не совсем обрезка).

Комментарии:

1. Следите за своими сокращениями внутри строк. При цитировании с помощью отдельных строк 'it's' может быть вашим врагом. Попробуйте 'it's' .

2. @PhpMyCoder: вы все правильно поняли. НЕТ. #scnr

3. @campino2k quirksmode.org/js/strings.html

4. @PhpMyCoder это всего лишь комментарий. Как сказал OP: «Я не буду утомлять вас всем кодом, я постараюсь придерживаться основ».

5. @campino2k Даже если OP опубликовал (читай: «надоел нам») весь свой код, неэкранированная цитата все равно испортит последующие строки (если только где-то под ней нет другой неэкранированной цитаты). Кроме того, я все еще «не понимаю правильно?»

Ответ №1:

Поскольку e это событие окна / документа, не следует ли вам запускать его в документе, а не в средстве выбора цвета?

Как видно из jQuery API, есть две ошибки:

  • не создавайте событие с ключевым словом «new»
  • Событие запуска для элемента body

Комментарии:

1. Я попробовал оба из них (извините, что не упомянул их в своем сообщении. Если я удалю ключевое слово new, оно ничего не сделает, все равно будет иметь тот же эффект. Изменение триггера даже на body (или что-то еще, кроме этого изображения) ничего не делает, фактически это даже прерывает событие нажатия кнопки сброса.

2. Почему бы и нет $('.colorbase').click(); ? Если я вас правильно понял, .colorbase-element — это кнопка сброса?

Ответ №2:

Попробуйте экранировать апостроф внутри строки replaceWith.

Ответ №3:

У вас опечатка;

     $(this).replaceWith(
        "This is all the display code, it's working fine." // all singlequotes before
    )