Сотрите есть 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 ?
Вообщем я видимо где то запутался