这应该很简单。标题中的关键词是"高效"。
我有:
<td id="pieceCount">13</td>
我希望将单元格值增加14.单元格将始终只包含整数。为此,我目前有:
$("#pieceCount").text(parseInt($("#pieceCount").text()) + 14);
这很有效。但是,发送jQuery两次查找#pieceCount
似乎效率低下。
我是否可以在外this
调用中使用$(this)
或text()
来引用jQuery已找到的#pieceCount
元素?或许还有另一种技术?
答案 0 :(得分:3)
是的,尽可能重用选择器:
var $e = $("#pieceCount");
$e.text(~~$e.text()+ 14);
同样~~
是整数转换的快捷方式
您也可以将功能传递给text
,如下所示:
$("#pieceCount").text(function(){ return ~~$(this).text()+14 });
注意:正如@Archer
指出的那样,您可以使用原始DOM元素的innerText
属性来处理内部文本,但我倾向于回避jQuery的绝缘(以及VS中的intellisense)。并且当@A. Wolff
指出时,现有的文本值作为参数传递给传递给text()
的任何函数。
$("#pieceCount").text(function(i, t){ return ~~t+14 });
答案 1 :(得分:2)
您可以使用text()
...
$("#pieceCount").text(function() { return parseInt(this.innerText, 10) + 14; });
这是一个有效的例子(我为了简单起见使用了div)......