我有一个包含多个元素的表单,我想迭代它们,并将所选元素(在每个个体中)的值与字符串进行比较。好像我想要使用val(),但是......
$("#FormSection select[class='input-small']").each(function (a, b) {
if (b.val()!="test")
alert('hello');
});
在上面,它说“val”是未定义的。但是b.id确实等于其中一个选择元素。
如果我直接使用jquery直接获取相同的select元素,则val()按预期工作。所以,我将循环内的b与直接抓取的选择进行了比较。差异:当直接抓取时,jQuery返回一个单元素数组。关于val()的文档提到它需要一个数组,所以也许这是预期的。
有趣的是,有一个属性“b.value”正是我所期望的,但我不知道它是否与jquery方法通常的跨浏览器兼容。
我很难找到这个,因为我的关键字返回了有关允许多选的s的结果。
任何想法都会非常感激!
谢谢.. -ben
答案 0 :(得分:2)
答案 1 :(得分:2)
您需要将其打包在$()
中以使用val()
。 val()不是DOM元素的有效方法,但正如您所提到的,您不需要这样做,而只需使用DOM元素的.value
属性。
$("#FormSection select[class='input-small']").each(function (idx, b) {
if (b.value !="test") // b represents DOM Element select, $(b) represents jquery object representing DOM element.
//if(this.value != test) or just use this. this context here is the element of current iteration.
alert('hello');
});
答案 2 :(得分:1)
对于初学者,你的选择器应该是"#FormSelection select.input-small"
,但是.each
除了遍历每个项目 - 在这种情况下,jQuery对象的每个元素。这意味着b
本身就是<select>
元素,因此没有jQuery函数。
请尝试$(b).val()
。