Noob jQuery“$”函数返回问题

时间:2010-07-13 17:40:14

标签: javascript jquery html object

HTML:

<input type="text" id="priceperperson1" name="priceperperson1" />
<input type="text" name="personsvalue1" class="countme" readonly="readonly" />

JS:

jQuery(document).ready(function($) {
$('div.pricerow input.countme').each(function(){ 
var id = this.name.substr(this.name.length-1);
alert($('input#priceperperson'+id));
this.value = parseInt($('priceperperson'+id).value) * parseInt($('countpersons'+id).value); 
});
});

尽可能缩短。所有我警惕的是“对象”......价值是NaN。我试图在id上“parseInt”。我试过了:

$('[name=priceperperson'+id+']');
$('priceperperson'+id);

我做错了什么?

7 个答案:

答案 0 :(得分:5)

执行$(..)

时,您正在检索jQuery对象

要获取值(字符串),请使用.val()方法。

所以

alert( $('input#priceperperson'+id).val() );

答案 1 :(得分:2)

您应该将$放在函数定义中。

我猜测它导致$变量在函数中被重新定义 - 而不再指向jQuery的$()函数。


我正在考虑这个:

jQuery(document).ready(function($) {

尝试使用,而不是:

jQuery(document).ready(function() {

答案 2 :(得分:1)

当你循环遍历jquery对象时,我相信你必须使用:

$(本).attr( '姓名'); 而不是 this.name

另外,要调用来自对象的值,你必须使用$ .val()或$ .attr('attributename');

// Shortcut for doc ready
$(function() 
{ 
 // Loop through values
 var id = $(this).attr('name');

 alert($('input#priceperperson' + id).val());
});

答案 3 :(得分:1)

您是否正在寻找.val()

this.val(parseInt($('priceperperson'+id).val()));

答案 4 :(得分:0)

  

所有我处于警戒状态的都是“对象”......价值   是NaN。我试过“parseInt”

尝试为parseInt提供基础:

parseInt(variable, 10);

答案 5 :(得分:0)

有一些错误......要获取jQuery对象的值,必须使用.val()方法,而不是.value

然后,parseInt()需要作为第二个参数的基数。类似的东西:

...
this.value = parseInt($('priceperperson'+id).val(), 10) * parseInt($('countpersons'+id).val(), 10); 
...

答案 6 :(得分:0)

您的代码可能包含错误

你的代码 id = lenght 1好的 如果id lenght&gt; 1 ??可能的例外

priceperperson1到priceperperson_1

# option # proposal

<input type="text" id="priceperperson_1" name="priceperperson_1" /> // => use "_"
<input type="text" name="personsvalue_1" class="countme" readonly="readonly" />


jQuery(document).ready(function($) {
    $('div.pricerow input.countme').each(function(){ 
        var id = this.name.split("_")[1]; // => get array value 
        this.value = parseInt($('[name=priceperperson_'+id+']').value()) *parseInt($('[name=countpersons='+id+']').value()); 
    });
});