2

我正在尝试获取上一个元素。因此,当单击时,.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();
});

演示

4

2 回答 2

3

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

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

到:

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

或者:

alert($curr_.val());

http://jsfiddle.net/2gf95/

于 2012-12-05T10:24:18.543 回答
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();
});

示例小提琴

于 2012-12-05T10:24:41.883 回答