修正案'text'的元素
Amend 'text' of element by class name
我一直在做一些我认为应该非常简单的事情(这就是我所知道的!)。
在HTML中我有:
<a class="removeQuantity"> - </a>
<span class="quantity"> 1 </span>
<a onclick="addQuantity('2')"> + </a>
在我的脚本中,我有一个函数:
function addQuantity(iQuant) {
iQuant = parseInt(iQuant);
$(this).prevAll('.quantity').text(iQuant.toString());
}
所以我想做的是将包含的值从1更改为传递给函数(2)的值,但似乎什么都不起作用。
有人能给我指正确的方向吗?
谢谢,C
问题是,当使用on*
属性分配事件处理程序时,它不会将范围设置为当前元素,因此this
指的是窗口,而不是引发事件的元素。要解决此问题,您可以将元素引用直接传递给函数,如下所示:
<a onclick="addQuantity(2, this)"> + </a>
function addQuantity(iQuant, el) {
$(el).prevAll('.quantity').text(iQuant);
}
请注意,在上面的示例中,我直接向函数传递了一个整数,以避免强制转换其类型。
作为更好的选择,您可以使用不引人注目的JS附加事件处理程序。如果你用jQuery标记了这个问题,下面是如何做到的:
<a class="quantity-amend" data-quantity="2"> + </a>
$('.quantity-amend').click(function(e) {
e.preventDefault();
$(this).prevAll('.quantity').text($(this).data('quantity'));
});
我不能使用不引人注目的(我想!),因为当确认数量变化时,我所在页面的部分会被重新加载。
在这种情况下,您可以使用委托的事件处理程序:
$(document).on('click', '.quantity-amend', function(e) {
e.preventDefault();
$(this).prevAll('.quantity').text($(this).data('quantity'));
});
相关文章:
- 用Javascript添加带有#text的tr元素
- 修正案'text'的元素
- 多个嵌套元素上的jQuery.text('')
- 设置'字体大小'jQuery不处理所选Text的最后一个元素
- SVG中的text元素将自己完全置于固定值之外
- jQuery.text() - 如何在不影响任何子元素的情况下更改标签的文本
- 带有 contenteditable=true 的 pre 标记 - 元素的 text() 内容中不会保留新行
- 当我单击特定元素时如何找到 text()
- .text() 给出元素中的所有文本元素
- 计算 jQuery text().Length of Visible 元素而不删除隐藏元素
- jQuery .text() 在同一类中的多个元素上
- AngularJS-动态创建<text区域>使用ngSanitize不会't显示(其他元素显示)
- "text长度"Internet Explorer中svg文本元素悬停时的更改
- 使用getElementByClassName在特定元素中设置Text
- TypeError:无法读取属性'text显示元素值'的未定义
- 当文本与元素一起悬停时发生更改时,onclick事件的Grab Text
- InvalidSelectorError:xpath表达式的结果是[object Text].它应该是一个元素
- 比较el.text()===“;字符串“;即使元素包含“”;字符串”;
- 在innerHTML中添加p元素后,输入[type="text"]的值不显示
- 不能在元素上创建checkboxradio.nodeName=input, element.type=text