2011-04-06 48 views
0

我有许多具有某个类的元素,并且在某些条件为真时尝试向它们追加某些内容。这是一个例子,但它告诉我this.value()不是一个函数。我不知道如何使用jQuery来引用单个元素。如果条件为真,则追加到元素

<span class="numbers">1</span><br> 
<span class="numbers">2</span><br> 
<span class="numbers">3</span><br> 

$('.numbers').after(function() { 
    if (this.value() > 1) return ('<span>Bigger than one.</span>'); 
}); 

http://jsfiddle.net/SkuW3/

+0

它应该是'$(this).value()',但是''没有值IIRC。 – kennytm 2011-04-06 16:08:07

+0

嗯,没有'.value()'它是'.val()'。不管它在这种情况下应该是'.text()'。 – Eli 2011-04-06 16:17:03

回答

5
$('.numbers').after(function() { 
    if (parseInt($(this).text(), 10) > 1) return ('<span>Bigger than one.</span>'); 
}); 

你有几个问题。

首先,您需要参考$(this)而不是this以在其上使用jQuery函数。

其次,使用.text()以文本形式获取元素的值。

parseInt(value,10)在将文本与javascript中的数字进行比较时只是一个好主意。

+0

+1,用于更快速地输入*和*将基数添加到parseInt中(因为他会去编辑自己的答案以在...中添加基数):) – 2011-04-06 16:17:35

1

this.value()不是函数 - 有this.value属性或jQuery.val()函数。但是,在这种情况下,你有一个<span>标记,它没有值,所以你最好用jQuery.text()代替。使用这个,你可以将你的代码改为:

$('.numbers').after(function() { 
    if (parseInt($(this).text(), 10) > 1) return ('<span>Bigger than one.</span>'); 
});