如何在不同的 HTML 标记场景中使用 jQuery 设置值
How to set value using jQuery in different HTML tag scenarios?
有没有一种简单的方法来更改不同HTML结构中的值?
在我当前的代码中,我有:
<input type="text" class="value" value="5.0"/>
我使用 .each()
和 val()
来更改类 value
的值:
$(this).val(convert($(this).val(), from, to));
当我尝试执行 convert
函数并将其返回值分配给其他 HTML 结构时会出现问题,如下所示:
<td><span class="value">5.0</span></td>
<td class="value">5.0</td>
尽管我的价值在标签span
,但它似乎没有改变。 我认为jQuery.val()
仅适用于设置输入字段或属性的值,并且我可以使用jQuery.text()
或jQuery.html()
来更改span
标签中的值。
我如何编写代码,以便我可以找出我正在更改的元素,并使用适当的 setter 方法,或者使用适用于 HTML 标记和span
HTML 标记甚至td
的方法input
?
添加小提琴以防万一...(全部应更新)
http://jsfiddle.net/dennisfedco/sa82pmwp/3/
输入元素将具有 .value
属性。这意味着您可以查找该属性并使用它,或者如果不存在,则使用文本值
$('.value').each(function(){
//if value is not undefined then use val()
if(this.value != void 0){
$(this).val(convert($(this).val(),from,to));
//otherwise use text
}else{
$(this).text(convert($(this).text(),from,to));
}
});
您可以使用:input
选择器测试元素是否为输入类型:
$('.value').each(function() {
var $this = $(this);
if ($this.is(':input'))
$this.val(convert($this.val(), from, to));
else
$this.text(convert($this.text(), from, to));
});
在引擎盖下,jQuery基本上用一个小的正则表达式测试元素的节点名称,看看它是否是一个输入元素,所以它应该非常快:
var rinputs = /^(?:input|select|textarea|button)$/i;
...
return rinputs.test(el.nodeName);
示例(修改代码以在此处工作):
$('.value').each(function() {
var $this = $(this);
if ($this.is(':input'))
$this.val($this.val() + " - changed!");
else
$this.text($this.text() + " - changed!");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input class="value" type="text" value="Initial 1" />
<br />
<span class="value">Initial 2</span>
如果你想对解决方案过于聪明,你可以做这样的事情,在那里你获取你应该使用哪个函数的引用,然后稍后调用它:
$('.value').each(function() {
var $this = $(this),
method = $this.is(':input') ? $this.val : $this.text;
method.apply($this, [convert(method.apply($this), from, to)]);
});
也:
- 这是对jsFiddle的更新。
一个选项可以让jQuery在输入值和不输入值之间进行选择。
$('.value:input').each(function(){
$(this).val(convert($(this).val(), from, to));
});
$('.value').not(':input').each(function(){
$(this).text(convert($(this).text(), from, to));
});
你更新的小提琴。
相关文章:
- jquery设置为使用参数运行
- Css order属性不't在Jquery设置时更新
- 通过jquery设置最小高度
- 使用jQuery设置HTML5属性值时出现问题
- 如何使用Ajax/jQuery设置cookie
- 通过jQuery设置转换值
- 如何从jQuery设置控制器或全局变量的属性
- javascript/jquery设置var未发生
- jQuery 设置和获取下拉列表和输入的本地存储数据
- 如何使用 jQuery 设置 .selectedIndex
- 使用 jquery 设置 Asp Label 控件的文本值
- 无法从jquery设置标签文本
- 如何使用Jquery设置按钮样式
- jQuery设置属性onclick所有元素,而不是使用内联JS
- 尝试使用jquery设置鼠标按下的时间来更改按钮触发器以控制音量滑块
- 无法使用jquery设置cookie
- 有没有一种快捷方式可以让我用javascript或jQuery设置对象的字段
- 使用Jquery设置页面加载的默认值(我使用的是multiselect插件)
- 单击JQuery设置布尔标志
- textarea根据内容js或jquery设置高度