2012-12-05 87 views
2

我想獲取上一個元素。所以當點擊.percen時我想提醒前一個元素的值。目前我得到undefined。問題是什麼?prev元素不返回

<input class="c currency" type="text" name="artigoAlternativo1_C"/> 
<input class="d currency percen" type="text" name="artigoAlternativo1_D"/> 

<br/> 

<input class="c currency" type="text" name="artigoAlternativo1_C"/> 
<input class="d currency percen" type="text" name="artigoAlternativo1_D"/> 
$.fn.percentageFormat = function() { 
    this.each(function (i) { 
     $(this).change(function (e) { 
      var $curr = $(this); 
      $curr_ = $curr.prev('.c'); 
      alert(this.value); 
      alert($curr_.prev().value); 
     }); 
    }); 
    return this; 
} 
$(function() { 
    $('.percen').percentageFormat(); 
}); 

demo

+1

@Adil,我不認爲這是實際上是真的;看到這裏:http://docs.jquery.com/Plugins/Authoring#Context – FixMaker

回答

3

你兩次調用prev方法和jQuery對象沒有value性質,變化:

alert($curr_.prev().value); 

要:

alert($curr.prev().val()); 

或:

alert($curr_.val()); 

http://jsfiddle.net/2gf95/

+0

實際上,它應該是'$ curr_.val()'。如果他已經定義了'$ curr_ = $ curr.prev('。c');'沒有必要再這樣做。 – Christoph

3

在你的代碼$curr_是一個jQuery元素,所以你需要使用val()來獲取值。你也使用了兩次prev()。試試這個:

$.fn.percentageFormat = function() { 
    this.each(function (i) { 
     $(this).change(function (e) { 
      var $curr = $(this); 
      $curr_ = $curr.prev('.c'); 
      alert(this.value); 
      alert($curr_.val()); // < Note no prev() here, and use of val() 
     }); 
    }); 
    return this; 
} 
$(function() { 
    $('.percen').percentageFormat(); 
}); 

Example fiddle