Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 13.02.2013, 09:17
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

prison47,
мало что понятно в вашем описании,минимальный хтмл код дайте и опишите что должно открыватся а что нет в нём.
Ответить с цитированием
  #22 (permalink)  
Старый 13.02.2013, 22:51
Аспирант
Отправить личное сообщение для prison47 Посмотреть профиль Найти все сообщения от prison47
 
Регистрация: 03.12.2012
Сообщений: 54

Сотрите есть 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 ?
Вообщем я видимо где то запутался
Ответить с цитированием
  #23 (permalink)  
Старый 24.02.2013, 08:38
Профессор
Отправить личное сообщение для sotik Посмотреть профиль Найти все сообщения от sotik
 
Регистрация: 14.09.2012
Сообщений: 158

Помогите,пожалуйста, разобраться.
Начал осваивать написание плагинов и вот попал...
Тело плагина примерно такое:
    var wos = document.getElementById("bamForm");
    wos.innerHTML = "<a href='#' onClick='Pipka()'>testik</a>";
function Pipka()
{
alert('порядок')
}
То есть в dom есть div, куда вставляется ссылка, у которой есть обработчик.Но при клике на ссылку функция не вызывается.
Ответить с цитированием
  #24 (permalink)  
Старый 24.02.2013, 13:19
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

onClick -> onclick для xhtml. В html можно хоть oNcLiCk писать - будет работать. Но уверен дело не в в этом.
sotik, а зачем вам jQuery?
Ответить с цитированием
  #25 (permalink)  
Старый 24.02.2013, 17:22
Профессор
Отправить личное сообщение для sotik Посмотреть профиль Найти все сообщения от sotik
 
Регистрация: 14.09.2012
Сообщений: 158

а я разве писал,что мне нужно jQuery ?!
я не совсем вас понял насчет onClick.
Как мне сделать,чтоб по клике на ссылку запускалась функция из плагина?
Ответить с цитированием
  #26 (permalink)  
Старый 24.02.2013, 17:50
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от sotik
а я разве писал,что мне нужно jQuery
Тогда объясните зачем вы полезли в этот топик? Здесь речь о плагинах к jQuery. Создайте тему в соответствующем разделе, опишите ясно и понятно проблему, используйте теги для форматирования кода и тд и тп. Ну прям как маленький, ей богу..
Ответить с цитированием
  #27 (permalink)  
Старый 24.02.2013, 18:57
Профессор
Отправить личное сообщение для sotik Посмотреть профиль Найти все сообщения от sotik
 
Регистрация: 14.09.2012
Сообщений: 158

Да я и есть маленький в плане скриптов для плагинов.Не думал что так все серьезно,смотрю речь про плагины идет.
В соответствующих топиках и темах писал- мне никто не ответил
Вы не могли бы мне помочь? пожалуйста.
Ответить с цитированием
  #28 (permalink)  
Старый 03.03.2013, 06:26
Аспирант
Отправить личное сообщение для prison47 Посмотреть профиль Найти все сообщения от prison47
 
Регистрация: 03.12.2012
Сообщений: 54

Снова здравствуйте. Помогите пожалуйста в такой вот проблеме:
Подключаем плагин с параметрами:
$(document).ready(function(){

$('#div_id').pluginName({
	mainTitle:'aa  aaaaaaaaa aaaaaaaaaa    aaaaaa'
});

 });

Если в параметре передать значение без переноса строки то все в порядке.
Но если так:
$(document).ready(function(){

$('#div_id').pluginName({
	mainTitle:'aa 
 aaaaaaaaa aaaaaaaaaa    aaaaaa'
});

 });

То все вылетает ошибка. Объясните пожалуйста как решить эту проблему.Я догадываюсь что есть для этого регулярное выражение, но не совсем понимаю как с его помощью обработать.
Заранее большое спасибо!

Последний раз редактировалось prison47, 03.03.2013 в 06:29.
Ответить с цитированием
  #29 (permalink)  
Старый 03.03.2013, 07:16
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Тут непричем ни jquery ни плагины, ни регулярки. Это синтаксическая ошибка. Если нужно объявить строку с переносами, то это делается либо:
var string = 'aa\
bbb';

либо
var string = 'aaa\nbbb';
Ответить с цитированием
  #30 (permalink)  
Старый 03.03.2013, 07:25
Аспирант
Отправить личное сообщение для prison47 Посмотреть профиль Найти все сообщения от prison47
 
Регистрация: 03.12.2012
Сообщений: 54

Понимаете у меня в параметры передается значение из <textarea> тоесть если кто-то вбивая значение в textarea сделает перенос строки, то скрипт не будет выполнятся. Так вот как мне отловить эти переносы и например заменить их на пробел или <br>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
public метод для плагина Ichigeki jQuery 1 16.02.2012 19:07
Использование $(this) внутри функции Dorian_bs Общие вопросы Javascript 6 21.11.2011 11:10
$(this) выборка Kuklavod jQuery 4 01.11.2011 20:15
Не срабатывает при отсутствии в теле документа yuriii jQuery 3 06.05.2010 17:45
$(this) обращение к выборкам цикла jei jQuery 1 16.09.2009 14:44