27.08.2018, 15:38
|
Аспирант
|
|
Регистрация: 13.07.2014
Сообщений: 78
|
|
Совершенно одинаковые скрипты по-разному ведут себя на разных доменах
Здесь работает нормально. Это тестовый домен, фотки не заливала.
[del]
Что имеется ввиду. Если нажать на выбор первого цвета - основного - на правильном сайте все происходит как и положено - цвет выбирается, к заголовку добавляется выбранный цвет. То же самое и для цвета перекладин.
А здесь не работает. Это рабочий домен.
[del]
если нажать на выбор первого цвета - второй ломается. Появляются скрытые надписи и выбор дополнительного цвета становится невозможен.
Не могу понять разницы, все залито один в один. Работает вот этот скрипт.
$(document).ready(function() {
$(function() {
$(".input_type_radio .radio_attr_label").each(function(indx, el){
$(el.lastChild).wrap('<span class="colorname"/>')
});
});
$('#block_attr_sel_2 .input_type_radio').click(function(){
$('#block_attr_sel_2 .input_type_radio').removeClass('selected');
$(this).addClass('selected');
$(".attributes_2 label.attributes_title span.colorname").remove();
$('.attributes_2 .input_type_radio.selected span.colorname').clone().appendTo('.attributes_2 .attributes_title .attributes_name');
});
$(window).on('load resize', function(){
if ($(window).width() <= 664) {
$('.attributes_2').insertAfter('.image_middle');
}
});
$('#block_attr_sel_42 .input_type_radio').click(function(){
$('#block_attr_sel_42 .input_type_radio').removeClass('selected');
$(this).addClass('selected');
$(".attributes_42 label.attributes_title span.colorname").remove();
$('.attributes_42 .input_type_radio.selected span.colorname').clone().appendTo('.attributes_42 .attributes_title .attributes_name');
});
$(window).on('load resize', function(){
if ($(window).width() <= 664) {
$('.attributes_42').insertAfter('.image_middle');
}
});
});
Вообще не понимаю в чем дело
Последний раз редактировалось Ленча, 28.08.2018 в 08:56.
|
|
27.08.2018, 16:45
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
А зачем в двух экземплярах обработчики?
|
|
27.08.2018, 16:57
|
Аспирант
|
|
Регистрация: 13.07.2014
Сообщений: 78
|
|
Для каждого атрибута отдельный обработчик.
#block_attr_sel_2 для верхнего цвета и #block_attr_sel_42 для нижнего. Они должны работать независимо друг от друга
|
|
27.08.2018, 17:30
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Ленча
|
Для каждого атрибута отдельный обработчик.
|
Ваши обработчики ничем не отличаются, различия в цифрах имен классов и id. Можно ведь написать один, используя в качестве селектора то что начинается с attributes. К тому же, $('#block_attr_sel_42 .input_type_radio').click .... уж не как не предполагает в обработчике $('#block_attr_sel_42 .input_type_radio').removeClass, ибо в обработчике $('#block_attr_sel_42 .input_type_radio') будут доступны как this. У вас и "клонирование" обработчиков, и лишнего в них много.
|
|
27.08.2018, 17:55
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Сообщение от laimas
|
"клонирование" обработчиков
|
Насчет "клонирования" - $(document).ready(function() { и $(function() {
|
|
27.08.2018, 17:58
|
Аспирант
|
|
Регистрация: 13.07.2014
Сообщений: 78
|
|
Я пока не представляю как можно написать один обработчик вместо двух так, чтоб щелчок по одному никак не сказывался на другом.
Понимаю, что у меня не идеальный код, и что можно написать круче - только мне все равно не понятно почему на одном сервере работает, а на другом - нет.Сейчас меня интересует именно это.
Последний раз редактировалось Ленча, 27.08.2018 в 18:01.
|
|
27.08.2018, 18:16
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Dilettante_Pro
|
Насчет "клонирования" - $(document).ready(function() { и $(function() {
|
А я этого не заметил, даже и не прочел. )
|
|
27.08.2018, 18:29
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Ленча
|
не представляю как можно написать один обработчик вместо двух так, чтоб щелчок по одному никак не сказывался на другом.
|
Ну здесь то $(window).on('load resize', ... о каком щелчке речь, к тому же обработчикам определено обрабатывать событие onload, в обработчике которого и устанавливаются они - $(document).ready(function() ...? Значит нужна функция, в которой $('.attributes_2, .attributes_42').insertAfter('.image_middle'), которая должна выполняется при загрузке страницы и при изменении размеров бразура.
Посмотрите на селекторы по атрибутам jQuery, посредством которых можно описать один обработчик $('#block_attr_sel_2 .input_type_radio').click ... вместо двух и проблем никаких с определением источника событий внутри него не будет, как и с поиском родителя.
Вы хотя бы попробуйте, с ошибками помогут разобраться.
Сообщение от Ленча
|
мне все равно не понятно почему на одном сервере работает, а на другом - нет
|
Возможно есть ошибки, конфликты. Я не смотрел ваш сайт, на данный момент мне не до этого, сорри
|
|
27.08.2018, 19:02
|
Аспирант
|
|
Регистрация: 13.07.2014
Сообщений: 78
|
|
он ресайз идет совсем другая функция. Меня интересуют те, что на клик.
Забудьте обо всем, кроме вот этих двух вещей
$('#block_attr_sel_2 .input_type_radio').click(function(){
$('#block_attr_sel_2 .input_type_radio').removeClass('selected');
$(this).addClass('selected');
$(".attributes_2 label.attributes_title span.colorname").remove();
$('.attributes_2 .input_type_radio.selected span.colorname').clone().appendTo('.attributes_2 .attributes_title .attributes_name');
});
$('#block_attr_sel_42 .input_type_radio').click(function(){
$('#block_attr_sel_42 .input_type_radio').removeClass('selected');
$(this).addClass('selected');
$(".attributes_42 label.attributes_title span.colorname").remove();
$('.attributes_42 .input_type_radio.selected span.colorname').clone().appendTo('.attributes_42 .attributes_title .attributes_name');
});
остальное - к делу не относится. И, если хотите что-то посоветовать - сначала, пожалуйста, посмотрите на сайт.
|
|
28.08.2018, 03:49
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Посмотрел. По первой ссылке не понять чего там правильного, по второй меняются картинки при выборе, что при этом "ломается" я не знаю, если выбор цвета перекладин, то не наблюдается. Все это до поры до времени, пока сценарии не подвешивают браузер, а отладчик сообщает об ошибках. Если при этом сказать, что html структура ваших block_attr_sel перегружены элементами, да они еще и нативные события обрабатывают, вы же мне предъявите претензии, что это мелочи и не важно.
|
|
|
|