| 
	
		
 $(this) в теле плагина 
		
		
		
		Помогите пожалуйста разобраться. Есть тело плагина. В html он вызывается на определенном элементе, допустим див с классом box. Соответственно если в плагине обращаться так $(this) нас приведет на див с классом box. А вот в чем проблема: а например хочу найти див с классом too, и на нем вызвать функцию. Например: 
	
$('.too').click(function(){
$(this).действие;
});
Так вот проблема в том что и внутри функции $(this) вызывает класс box. Так вот как мне повесить действия на этот элемент на котором вызван click.  | 
	
		
 
<script type="text/javascript">
$(window).load(function(){
$(".box").plugin(
	);
});
</script>
<div class="box">Click</div> // нажимаем получаем действие, например добавляем в DOM еще один див с классом too при клике на котором он же и закроется.
$('.too').click(function(){
$(this).hide(); // но хайд естественно не сработает потому как this возвратит див с классом бокс
});
 | 
	
		
 Внутри обработчика собития this ссылается на элемент, в котором возникло событие, то есть на .too 
	
<button class="too">Клик ми</button>
<script src="//code.jquery.com/jquery-latest.min.js"></script>
<script>
    $('.too').click(function(e){
        alert( this.className );
    });
</script>
 | 
	
		
 То что this возвращает это я знаю. Но дело в том что возвращает его как объект, тоесть так уже не получится сделать this.hide(); 
	 | 
	
		
 this ссылается на чистый DOM-элемент. 
	Если нужны плюшки из jquery-обертки, просто оборачиваем его в нее: $(this).hide(). Это же так просто. 
<button class="too">Клик ми</button>
<script src="//code.jquery.com/jquery-latest.min.js"></script>
<script>
    $('.too').click(function(e){
        $(this).hide();
    });
</script>
 | 
	
		
 Да но вы забыли что мы все это делаем в теле плагина, а там $(this) выдаст .box 
	 | 
	
		
 $('.too').click(fn) регистрирует функцию fn в качестве обработчика события click. При наступлении события click, jQuery вызывает данную функцию, устанавливая в качестве контекста dom-элемент, на котором сработало событие. 
	И не имеет значения где эта функция находится. Хоть на луне. В примере выше обработчик регистрировали в глобальном контексте, тоесть window, тем не менее this внутри обработчика не указывает на window, верно? Другой пример: 
<button class="too">Клик ми</button>
<script src="//code.jquery.com/jquery-latest.min.js"></script>
<script>
    (function(){
        alert (this);
        $('.too').click(function(e){
            $(this).hide();
        });
    // вызываем, устанавливая контекстом строку 'Луна'
    }).call('Луна');
</script>
 | 
	
		
 Да получается я вызываю плагин на .box и в теле плагина $(this) всегда возвращает мне тот элемент на котором был вызван плагин. :( 
	 | 
	
		
 prison47, 
	с каким плагином боритесь? и зачем внутри плагина дополнительная фунция нужна?  | 
	
		
 Я разбираюсь с созданием плагина. Вот например я хочу вызвать появление дива .too при нажатии на .box. Подключаю плагин на .box 
	
<script type="text/javascript">
$(window).load(function(){
$(".box").plugin(
    );
});
</script>
Все работает, кликаем на .box появляется див .too. А вот теперь я хочу повесить обработчик на див .too например .hide(). То есть при нажатии на .too он исчезает. Но ничего естественно не получается так $(this) даже внутри функции обработчика возвращает тот дом элемент на котором был вызван плагин, тоесть .box  | 
| Часовой пояс GMT +3, время: 06:36. | 
		
  |