不返回prev元素

时间:2012-12-05 10:18:37

标签: jquery

我正在尝试获取前一个元素。因此,当点击.percen时,我想提醒前一个元素的值。目前我得到undefined。有什么问题?

<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

2 个答案:

答案 0 :(得分:3)

您正在调用prev方法两次并且jQuery对象没有value属性,请更改:

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

要:

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

或:

alert($curr_.val());

http://jsfiddle.net/2gf95/

答案 1 :(得分: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