.delegate问题

时间:2011-07-22 22:14:37

标签: jquery

我使用以下代码在文本字段中显示文字,当您关注它时会消失:

$(document).ready(function(){
  $('.onfocus_rem_txt').each(function(){
   $(this).val($(this).attr('defaultVal'));
   $(this).css({color:'grey'});
  });

  $('.onfocus_rem_txt').focus(function(){
   if ($(this).val() == $(this).attr('defaultVal')){
   $(this).val('');
   $(this).css({color:'black'});
   }
  });

  $('.onfocus_rem_txt').blur(function(){
   if ($(this).val() == ''){
   $(this).val($(this).attr('defaultVal'));
   $(this).css({color:'grey'});
   }
  });
});

如何使用.delegate在我打开的每个new.php页面中使用它?

2 个答案:

答案 0 :(得分:0)

您可以委托.focus.blur这样的事件,不需要使用.each进行迭代,只需在创建{{input时预先应用值和文字颜色1}}元素

示例:http://jsfiddle.net/pxfunc/fLnjX/

var $container = $('#container');

$container.delegate('.onfocus_rem_txt', {
    'focus': function() {
        var $that = $(this);
        if ($that.val() === $that.attr('defaultVal')) {
            $that.val('').css('color', 'black');
        }
    },
    'blur': function() {
        var $that = $(this);
        if ($that.val() === '') {
            $that.val($that.attr('defaultVal')).css('color', 'grey');
        }
    }
});

答案 1 :(得分:0)

您可以使用直播以便在多个地方使用此功能

$(document).ready(function(){
  $('.onfocus_rem_txt').each(function(){
     $(this).val($(this).attr('defaultVal'));
     $(this).css({color:'grey'});
  }).live({
     'focus': function(){
       if ($(this).val() == $(this).attr('defaultVal')){
         $(this).val('');
         $(this).css({color:'black'});
       },
     'blur': function(){
       if ($(this).val() == ''){
        $(this).val($(this).attr('defaultVal'));
        $(this).css({color:'grey'});
       }

  });
});