prison47,
мало что понятно в вашем описании,минимальный хтмл код дайте и опишите что должно открыватся а что нет в нём. |
Сотрите есть 4 кнопки на которые подключен плагин.
<script type="text/javascript"> $(document).ready(function(){ $("[data-btn]").plugin(); }); </script> <div data-btn="w1">Click</div> <div data-btn="w2">Click</div> <div data-btn="w3">Click</div> <div data-btn="w3">Click</div> При нажатии на одну из кнопок предположим в бади вставляется еще один див, внутри которого еще один элемент играющий роль закрытия. <div class="new_div"><span class="toggle">Close</span></div> Так вот если поставить на этот спан обработчик например клик: $('body').on('click', '.toggle' function(){ console.log($(this)); }); Выдаст 4 спана. А да и все это находится в конструкции : return this.each(function() { После выноса ха пределы this.each все работает как нужно. Но вот вопрос является ли это правильным? Такое подозрение что у меня получается кавардак. И второй более запутанный вопрос внутри этой же конструкции this.each у меня имеется такой код: casePress.on('click', '[data-open]', function(){ // open data-case open var thPheight = $(this).parent('[data-case]').innerHeight(); var thPwidth = $(this).parent('[data-case]').innerWidth(); var calHeight = $(window).height() / 2 - thPheight / 2; var calWidth = $(window).width() / 2 - thPwidth / 2; if(setting.autoResizeBox == true){ // if auto resize box open $(this).parent('[data-case]').appendTo('body').addClass('auto_center').css({'top': calHeight, 'right': calWidth, 'width': '30%'}); } else { $(this).parent('[data-case]').appendTo('body').addClass('auto_center').css({'top': calHeight, 'right': calWidth}); }; // auto resize box close $('html').css('overflow', 'hidden'); genOverlay.stop(true).fadeTo(setting.overlayShowSpeed, setting.overlayOpacity); }); // open data-case close Вкратце получается вот что: при нажатии на кнопку <div data-btn="w1">Click</div> на которую подключен плагин, появляется вновь созданный див со спаном внтури. <div data-case="w1"><span data-open="da">Open</span></div> При нажатии на спан, див data-case переносится в конец бади, меняет свой ширину и высоту, и выстраивается точно по центру экрана. Это все хорошо но если мы перенесем этот код за пределы return this each то он перестает правильно высчитывать высоту и ширину data-case, вернее высчитывает ее но до того как див поменял свои размеры при переносе в конец бади. По логике это как бы правильно поскольку расчет высоты и ширины идет до момента его переноса и изменения размеров. Но почему это работает внутри this each ? Вообщем я видимо где то запутался :( |
Помогите,пожалуйста, разобраться.
Начал осваивать написание плагинов и вот попал... Тело плагина примерно такое: var wos = document.getElementById("bamForm"); wos.innerHTML = "<a href='#' onClick='Pipka()'>testik</a>"; function Pipka() { alert('порядок') } То есть в dom есть div, куда вставляется ссылка, у которой есть обработчик.Но при клике на ссылку функция не вызывается. |
onClick -> onclick для xhtml. В html можно хоть oNcLiCk писать - будет работать. Но уверен дело не в в этом.
sotik, а зачем вам jQuery? |
а я разве писал,что мне нужно jQuery ?! :)
я не совсем вас понял насчет onClick. Как мне сделать,чтоб по клике на ссылку запускалась функция из плагина? |
Цитата:
|
Да я и есть маленький в плане скриптов для плагинов.Не думал что так все серьезно,смотрю речь про плагины идет.
В соответствующих топиках и темах писал- мне никто не ответил :( Вы не могли бы мне помочь? пожалуйста. |
Снова здравствуйте. Помогите пожалуйста в такой вот проблеме:
Подключаем плагин с параметрами: $(document).ready(function(){ $('#div_id').pluginName({ mainTitle:'aa aaaaaaaaa aaaaaaaaaa aaaaaa' }); }); Если в параметре передать значение без переноса строки то все в порядке. Но если так: $(document).ready(function(){ $('#div_id').pluginName({ mainTitle:'aa aaaaaaaaa aaaaaaaaaa aaaaaa' }); }); То все вылетает ошибка. Объясните пожалуйста как решить эту проблему.Я догадываюсь что есть для этого регулярное выражение, но не совсем понимаю как с его помощью обработать. Заранее большое спасибо! |
Тут непричем ни jquery ни плагины, ни регулярки. Это синтаксическая ошибка. Если нужно объявить строку с переносами, то это делается либо:
var string = 'aa\ bbb'; либо var string = 'aaa\nbbb'; |
Понимаете у меня в параметры передается значение из <textarea> тоесть если кто-то вбивая значение в textarea сделает перенос строки, то скрипт не будет выполнятся. Так вот как мне отловить эти переносы и например заменить их на пробел или <br>
|
Часовой пояс GMT +3, время: 14:19. |