#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
)