Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.11.2016, 21:37
Новичок на форуме
Отправить личное сообщение для Marius90 Посмотреть профиль Найти все сообщения от Marius90
 
Регистрация: 08.11.2016
Сообщений: 3

Сократить код.
Приветствую! При помощи библиотеки "jQuery maphilight" написал скрипт, который при клике на определенный чекбокс подсвечивает область на схеме и выделяет определенным стилем строку в таблице с описанием данной области. Код получился однотипный, но я не пойму как его сократить. Буду рад любой помощи.

$(function() {
        $('.map').maphilight({
            fillColor: '008800'
        });
        

          $("#check1").click(function(e) {
            var row = $(this).parent().parent();
            var id = row.attr("id");
            var data = $("#lot").mouseout().data('maphilight') || {};
            data.alwaysOn = !data.alwaysOn;
            
            if (this.checked) {
                 row.addClass("selected");
                 $("#lot").data('maphilight',       data).trigger('alwaysOn.maphilight');
            } else {
                  row.removeClass("selected");
               $("#lot").data('maphilight', data).trigger('alwaysOn.maphilight');
            }
        });

            $("#check2").click(function(e) {
            var row = $(this).parent().parent();
            var id = row.attr("id");
            var data = $("#lot1").mouseout().data('maphilight') || {};
            data.alwaysOn = !data.alwaysOn;
            
            if (this.checked) {
                 row.addClass("selected");
                 $("#lot1").data('maphilight', data).trigger('alwaysOn.maphilight');
            } else {
                  row.removeClass("selected");
               $("#lot1").data('maphilight', data).trigger('alwaysOn.maphilight');
            }
        });

          $("#check3").click(function(e) {
            var row = $(this).parent().parent();
            var id = row.attr("id");
            var data = $("#lot2").mouseout().data('maphilight') || {};
            data.alwaysOn = !data.alwaysOn;
            
            if (this.checked) {
                 row.addClass("selected");
                 $("#lot2").data('maphilight', data).trigger('alwaysOn.maphilight');
            } else {
                  row.removeClass("selected");
               $("#lot2").data('maphilight', data).trigger('alwaysOn.maphilight');
            }
        });
          $("#check4").click(function(e) {
            var row = $(this).parent().parent();
            var id = row.attr("id");
            var data = $("#lot3").mouseout().data('maphilight') || {};
            data.alwaysOn = !data.alwaysOn;
            
            if (this.checked) {
                 row.addClass("selected");
                 $("#lot3").data('maphilight', data).trigger('alwaysOn.maphilight');
            } else {
                  row.removeClass("selected");
               $("#lot3").data('maphilight', data).trigger('alwaysOn.maphilight');
            }
        });
    });
Ответить с цитированием
  #2 (permalink)  
Старый 09.11.2016, 21:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Marius90,
макет бы минимальный, а так можно тригер из условия вынести, перед или после условия поставить, значения не имеет.
Ответить с цитированием
  #3 (permalink)  
Старый 09.11.2016, 22:14
Аспирант
Отправить личное сообщение для Ostic Посмотреть профиль Найти все сообщения от Ostic
 
Регистрация: 31.08.2016
Сообщений: 49

$(function() {
	        $('.map').maphilight({
	            fillColor: '008800'
	        });
var list = {"#lot":"#check1","#lot1":"check2",...};
   for(var key in list){
     $(list.key).click(function(e) {
      ...
      $(key).data('maphilight', data)...
   };
});

как-то так имхо
Ответить с цитированием
  #4 (permalink)  
Старый 09.11.2016, 22:25
Новичок на форуме
Отправить личное сообщение для Marius90 Посмотреть профиль Найти все сообщения от Marius90
 
Регистрация: 08.11.2016
Сообщений: 3

Полный скрипт в архиве. Спс за предложенные методы решения, буду пробовать.
Вложения:
Тип файла: zip new.zip (177.1 Кб, 2 просмотров)
Ответить с цитированием
  #5 (permalink)  
Старый 09.11.2016, 23:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Marius90,
$(function() {
    $(".map").maphilight({
        fillColor: "008800"
    });
    var d = $("map area");
    $("#areas tbody tr").each(function(e, b) {
        var c = d.eq(e),
            a = c.data("maphilight") || {};
        $('input[type="checkbox"]', b).on("click", function() {
            a.alwaysOn = !a.alwaysOn;
            $(b).toggleClass("selected", a.alwaysOn);
            c.data("maphilight", a).trigger("alwaysOn.maphilight")
        })
    })
});
Ответить с цитированием
  #6 (permalink)  
Старый 09.11.2016, 23:13
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,501

рони, называй, пожалуйста, переменные говорящими именами. До одной буквы их прекрасно сократит минификатор.)
__________________
29375, 35
Ответить с цитированием
  #7 (permalink)  
Старый 09.11.2016, 23:15
Новичок на форуме
Отправить личное сообщение для Marius90 Посмотреть профиль Найти все сообщения от Marius90
 
Регистрация: 08.11.2016
Сообщений: 3

Сообщение от рони Посмотреть сообщение
Marius90,
$(function() {
    $(".map").maphilight({
        fillColor: "008800"
    });
    var d = $("map area");
    $("#areas tbody tr").each(function(e, b) {
        var c = d.eq(e),
            a = c.data("maphilight") || {};
        $('input[type="checkbox"]', b).on("click", function() {
            a.alwaysOn = !a.alwaysOn;
            $(b).toggleClass("selected", a.alwaysOn);
            c.data("maphilight", a).trigger("alwaysOn.maphilight")
        })
    })
});
спс большое, все работает)
Ответить с цитированием
  #8 (permalink)  
Старый 09.11.2016, 23:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Aetae,
$(function() {
    $(".map").maphilight({
        fillColor: "008800"
    });
    var areas = $("map area");
    $("#areas tbody tr").each(function(indx, tr) {
        var area = areas.eq(indx),
            data = area.data("maphilight") || {};
        $('input[type="checkbox"]', tr).on("click", function() {
            data.alwaysOn = !data.alwaysOn;
            $(tr).toggleClass("selected", data.alwaysOn);
            area.data("maphilight", data).trigger("alwaysOn.maphilight")
        })
    })
});
Ответить с цитированием
  #9 (permalink)  
Старый 09.11.2016, 23:24
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,501

рони, дык это не для меня же, а для тех кому отвечаешь.)
__________________
29375, 35
Ответить с цитированием
  #10 (permalink)  
Старый 09.11.2016, 23:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Aetae,
ок.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать код CSS+HTML JamesMorgan Общие вопросы Javascript 2 11.08.2015 12:50
Код ответа сервера и обновление iframe alexdemi911 Общие вопросы Javascript 6 10.08.2015 22:30
Помогите к js коду, написать html код Modrih Элементы интерфейса 8 16.06.2015 18:08
Требуется выводить код рекламного блока Adsense из файла JavaScript??? speedflow Элементы интерфейса 0 26.05.2012 15:50
Получить код js-скрипта, находящегося в файле на сервере RomanA Общие вопросы Javascript 4 04.04.2012 09:53