Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   .each & .live (https://javascript.ru/forum/jquery/21179-each-live.html)

yurik417 31.08.2011 15:25

.each & .live
 
Обьясните пожалуйста, почему вдруг не работает конструкция:
jQuery('input').each(function(){
     jQuery(this).live('focus',function(){
          alert(1)	
     })
})

kadabrik 31.08.2011 15:38

Зачем здесь each?
jQuery('input').live('focus',function(){
          alert(1)	
     })

live не будет работать с набором без привязанного к нему селектора.

melky 31.08.2011 15:47

потому что делаете через одно место неправильно

jQuery('input').live('focus', function(){ 
     alert(1)
});

yurik417 31.08.2011 15:55

Цитата:

Сообщение от kadabrik (Сообщение 123854)
Зачем здесь each?
jQuery('input').live('focus',function(){
          alert(1)	
     })

live не будет работать с набором без привязанного к нему селектора.


each здесь, потаму что для каждого елемента перед событием "focus", нужно сформировать переменную с $(this).val()

Сделал бы .bind но TEXTAREA грузится AJAXом

SkyLight 31.08.2011 16:00

И что? У вас же в обработчике focus'а и так this будет указывать на элемент, который запустил событие

yurik417 31.08.2011 16:03

Цитата:

Сообщение от SkyLight (Сообщение 123863)
И что? У вас же в обработчике focus'а и так this будет указывать на элемент, который запустил событие

Я же написал "перед событием "focus""

kadabrik 31.08.2011 16:03

Цитата:

Сообщение от yurik417 (Сообщение 123862)
each здесь, потаму что для каждого елемента перед событием "focus", нужно сформировать переменную с $(this).val()

Что имеется ввиду?
Это:
jQuery('input').live('focus',function(){
          var anyVariable = $(this).val();
          alert(1);
     })

Или это:
jQuery('input').live('focus',function(){
          alert(1);
     }).each(function(){
          var someVariable = $(this).val() 
});

yurik417 31.08.2011 16:15

Цитата:

Сообщение от kadabrik (Сообщение 123865)
Что имеется ввиду?
Это:
jQuery('input').live('focus',function(){
          var anyVariable = $(this).val();
          alert(1);
     })

Или это:
jQuery('input').live('focus',function(){
          alert(1);
     }).each(function(){
          var someVariable = $(this).val() 
});

Ребята это не то!
Речь идет о "Placeholder". Вот что хочется получить:
$('input').each(function(){
	var el = $(this);
	var elVal = el.val();
	el
	.live('focus',function(){
		if(el.val() == elVal){
			el.val('');
		}
	})
	.live('blur',function(){
		if(el.val() == ''){
			el.val(elVal); 
		}
	})
})

melky 31.08.2011 16:18

Цитата:

Сообщение от yurik417 (Сообщение 123862)
each здесь, потаму что для каждого елемента перед событием "focus", нужно сформировать переменную с $(this).val()

Сделал бы .bind но TEXTAREA грузится AJAXом

и как ты собрался получать $(this).val(), если элемента ещё нет на странице, а будет загружаться через ajax ?


Цитата:

Сообщение от yurik417 (Сообщение 123851)
Обьясните пожалуйста, почему вдруг не работает конструкция:

Цитата:

Сообщение от yurik417 (Сообщение 123862)
each здесь, потаму что для каждого елемента перед событием "focus", нужно сформировать переменную с $(this).val()

:)

yurik417 31.08.2011 16:22

Цитата:

Сообщение от melky (Сообщение 123875)
и как ты собрался получать $(this).val(), если элемента ещё нет на странице, а будет загружаться через ajax ?
:)

Вообщето собрался вставить код в "success: function(){...}"


Часовой пояс GMT +3, время: 17:00.