Javascript.RU

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

jQuery плагин выбора изображений
Пишу плагин выбора изображения для сайта, но возникли некоторые вопросы. Помогите разобраться.

Смысл таков. При создании поста на сайте пользователю предлагается выбрать 2 изображения: большое и маленькое.
Соответственно 2 кнопки: выбрать большое изображение и выбрать маленькое. Возле каждой кнопки есть изображение-превью.

Например, пользователь нажимает на кнопку "выбрать большое изображение", появляется всплывающее окно, где он выбирает изображение и нажимает кнопку "ок". Далее всплывающее окно исчезает и в превью отображается выбранное изображение.

Проблема в том, что при выборе большого изображения, заполняется и маленькое. И наоборот.

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

http://codepen.io/fatalstrike/pen/bIfBy

Заранее спасибо за помощь

js код плагина:
(function ($) {
    $.fn.test = function (options) {
        options = $.extend({
            'color': '#777',
            'myclick': function () {
            }
        }, options);

        var $this = this;
        var color_btn = $("#button");
        var popup = $('.popup');


        $.each($this, function () {


            $(this).click(function () {
                popup.css('display', 'block');
              popup.find('p').text('Квадрат должен окрасится в цвет: ' + options.color);
            })

            color_btn.click(function() {
              popup.css('display', 'none');
                var color = options.color;
                options.myclick.call($this, color);
            });
        });

    }
})(jQuery);

$('#close').click(function() {
    $(this).parent().css('display', 'none');
});

$('#link1').test({
    color: 'red',
    myclick: function (color) {
        $('.box').css('background', color);
    }
});


$('#link2').test({
    color: 'green',
    myclick: function (color) {
        $('.box').css('background', color);
    }
});

Последний раз редактировалось fatalstrike, 12.06.2013 в 19:54.
Ответить с цитированием
  #2 (permalink)  
Старый 12.06.2013, 20:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

fatalstrike,
Вариант...
<!DOCTYPE HTML>
<html>

    <head>
        <title>Untitled</title>
        <meta charset="utf-8">
        <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
        <style type="text/css">
            <!-- .box {
                display: block;
                width: 100px;
                height: 100px;
                background: gray;
            }
            .popup {
                display: none;
                position: fixed;
                top: 20%;
                left: 40%;
                width: 200px;
                height: 100px;
                background: gray;
                padding: 10px;
            }
            -->
        </style>
    </head>

    <body>
        <div class="box"></div> <a href="#" id="link1">link1</a>
        <br> <a href="#" id="link2">link2</a>

        <div class="popup">
            <p>text</p>
            <button id="button">COLOR!</button>
            <button id="close">Close this</button>
        </div>
        <script>
            (function ($) {
                $.fn.test = function (options) {
                    options = $.extend({
                        'color': '#777',
                        'myclick': function () {}
                    }, options);

                    var $this = this;
                    var color_btn = $("#button");
                    var popup = $('.popup');


                    $.each($this, function () {
                        $(this).click(function () {
                            popup.css('display', 'block');
                            popup.find('p').text('Квадрат должен окрасится в цвет: ' + options.color);
                            color_btn.click(function () {
                                popup.css('display', 'none');
                                var color = options.color;
                                options.myclick.call($this, color);
                            });
                        })


                    });

                }
            })(jQuery);

            $('#close').click(function () {
                $(this).parent().css('display', 'none');
            });

            $('#link1').test({
                color: 'red',
                myclick: function (color) {
                    $('.box').css('background', color);
                }
            });


            $('#link2').test({
                color: 'green',
                myclick: function (color) {
                    $('.box').css('background', color);
                }
            });
        </script>
    </body>

</html>
Ответить с цитированием
  #3 (permalink)  
Старый 13.06.2013, 15:04
Новичок на форуме
Отправить личное сообщение для fatalstrike Посмотреть профиль Найти все сообщения от fatalstrike
 
Регистрация: 12.06.2013
Сообщений: 3

А Если сделать тоже, только с двумя квадратами, то при выборе цвета для одного квадрата, окрашивается и другой

http://codepen.io/fatalstrike/pen/ixabd

Подскажите, что не так в этом случае
Ответить с цитированием
  #4 (permalink)  
Старый 13.06.2013, 16:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

fatalstrike, попробуйте размещать пример прямо тут
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Вариант ... добавлена строка 73 и исправлена функция кнопки закрытия
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
<style type="text/css">
.box {
  display: table-cell;
  vertical-align: middle;
  width: 100px;
  height: 100px;
  background: gray;
  text-align: center;
  font-size: 20px;
  font-weight: bold;
}

.popup {
  display: none;
  position: fixed;
  top: 20%;
  left: 40%;
  width: 200px;
  height: 100px;
  background: gray;
  padding: 10px;
}

.pull-left
{
  float: left;
  margin-right: 10px;
}
</style>
   <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>

<body>
<div class="pull-left">
  <div class="box" id="box1">box1</div>
  <a href="#" id="link1">Выбрать цвет</a>
</div>

<div class="pull-left">
  <div class="box" id="box2">box2</div>
  <a href="#" id="link2">Выбрать цвет</a>
</div>

<div class="popup">
  <p>Выберите цвет
  <select id="color_select">
    <option value="red">Красный</option>
    <option value="green">Зеленый</option>
  </select></p>
  <div>  <button id="button">Окрасить</button>
  <button id="close">Закрыть</button></div>

</div>
<script>
            (function ($) {
                $.fn.test = function (options) {
                   var options = $.extend({
                        'myclick': function () {}
                    }, options);
                    var $this = this;
                    var color_btn = $("#button");
                    var popup = $('.popup');
                    $.each($this, function () {
                        $(this).click(function () {
                            popup.css('display', 'block');
                            color_btn.unbind();
                            color_btn.click(function () {
                                popup.css('display', 'none');
                                var color = $('#color_select').val();
                                options.myclick(color);
                            });
                        })
                    });

                }
            })(jQuery);

            $('#close').click(function () {
                $('.popup').css('display', 'none');
            });

            $('#link1').test({
                myclick: function (color) {
                    $('#box1').css('background', color);
                }
            });


            $('#link2').test({
                myclick: function (color) {
                    $('#box2').css('background', color);
                }
            });
</script>
</body>
</html>

Последний раз редактировалось рони, 13.06.2013 в 16:43.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
плагин jquery ajax upload Karabella jQuery 0 06.06.2013 21:25
Как сделать плагин jQuery в виде объекта? SkaN jQuery 12 28.06.2012 12:31
Плагин jQuery form. Добавляю форму js'ом Physicist jQuery 3 21.07.2011 17:46
syncTranslate jQuery плагин Snowcore Ваши сайты и скрипты 0 20.10.2009 19:00
Плагин для файрфокса - чтение изображений SunnyDay Общие вопросы Javascript 4 28.04.2009 17:30