如何使用来自对象$ this?
的JQuery设置元素的值我有一些“A”类的div。
<div class="A">
<span name='B'>some text</span>
<div>
<input name='value_1' value='15'/>
<input name='value_2' value='9'/>
</div>
</div>
<div class="A">
<span name='B'>some other text</span>
<div>
<input name='value_1' value='7'/>
<input name='value_2' value='12'/>
</div>
</div>
...more divs like those
我正在设置名称B的跨度文本,其输入值更大(输入'value_1'和'value_2')。
但我正在尝试的似乎失败了,这就是js(使用jquery):
function setSpans(){
var value1=0;
var value2=0;
var setting_value = 0;
$('.A').each(function(){
value1 = $(this).find("input[name='value_1']").val();
value2 = $(this).find("input[name='value_2']").val();
if(value1 > value2)
setting_value = value1;
else
setting_value = value2;
//here comes what I can't accomplish
$(this).find("span[name='B']").text(setting_value);
});
}
答案 0 :(得分:1)
您需要做的就是在比较数字之前将字符串值转换为数字:
var value1 = Number($(this).find("input[name='value_1']").val());
var value2 = Number($(this).find("input[name='value_2']").val());
请记住,输入字段的值始终是字符串,当然字符串 "9"
大于"15"
。
答案 1 :(得分:1)
我看到两个问题:
setSpans
来电的时间。必须在使用过的元素已经在DOM中之后 - 使用document.ready
或在页面中放置这些元素之后的脚本。
input
s的值是字符串,因此您可以使用parseInt
将值作为数字进行比较。
可行的例子:
HTML:
<div class="A">
<span name='B'>some text</span>
<div>
<input name='value_1' value='15'>
<input name='value_2' value='9'>
</div>
</div>
<div class="A">
<span name='B'>some other text</span>
<div>
<input name='value_1' value='7'>
<input name='value_2' value='12'>
</div>
</div>
JS:
$(document).ready(setSpans);
function setSpans()
{
var value1 = 0;
var value2 = 0;
var setting_value = 0;
$('.A').each(function()
{
value1 = parseInt($(this).find("input[name='value_1']").val());
value2 = parseInt($(this).find("input[name='value_2']").val());
if (value1 > value2)
{
setting_value = value1;
}
else
{
setting_value = value2;
}
$(this).find("span[name='B']").text(setting_value);
});
}