2014-04-18 42 views
2

这个脚本部分仅适用于最后textarea对象:jQuery的每个函数使用的最后一个对象

$('textarea[data-placeholder]').each(function() { 
    var $this = $(this); 
    $placeholder = $this.attr('data-placeholder'); 
    $placeholder = $placeholder.replace(/\<br>/g, "\n"); 
    $informer_id = $this.attr('data-informer-link'); 
    console.log('each: ' + $informer_id + ', placeholder: ' + $placeholder); 

    $this.attr('value', $placeholder); 

    $this.focus(function() { 
     if ($this.val() == $placeholder) { 
      $this.attr('value', ''); 
     } 
    }); 
    $this.blur(function() { 
     if ($this.val() == '') { 
      $this.attr('value', $placeholder); 
      console.log('each brur placeholder: ' + $informer_id); 
      $('[data-informer-id=' + $informer_id + '] i.fa') 
       .addClass('fa-circle') 
       .removeClass('fa-check-circle'); 
     } else { 
      console.log('each brur value: ' + $informer_id); 
      $('[data-informer-id=' + $informer_id + '] i.fa') 
       .removeClass('fa-circle') 
       .addClass('fa-check-circle'); 
     } 
    }); 

    // remove the focus, if it is on by default 
    $this.blur(); 
    $('[data-informer-id=' + $informer_id + '] i.fa') 
     .addClass('fa-circle') 
     .removeClass('fa-check-circle'); 
}); 

为什么,如果我赶上与var $this = $(this);的对象,会发生什么?

活生生的例子: http://jsfiddle.net/ynts/M9pZN/

回答

4

的问题是在你的变量。你已经错过了关键字var所以你的变量是全球

var $placeholder = $this.attr('data-placeholder'); 
$placeholder = $placeholder.replace(/\<br>/g, "\n"); 
var $informer_id = $this.attr('data-informer-link'); 

UPD:不必要的变种删除

相关问题