Moh*_*aji 2 javascript arrays jquery jquery-selectors
我有一个简化的输入文本框数组如下:
<input type="text" name="quantity[3]" value="0">
<input type="text" name="quantity[6]" value="0">
<input type="text" name="quantity[7]" value="0">
<input type="text" name="quantity[11]" value="0">
Run Code Online (Sandbox Code Playgroud)
这两种方式中的任何一种对我来说都是可以接受的,但我不知道如何做其中一种:
当第3个输入框(有索引7)改变时,两个alert()s中的任何一个都可以接受:
7)我的代码不起作用是:
$(document).ready(function(){
$('input[name^=quantity]').change(function(){
alert($(this).index());
});
})
Run Code Online (Sandbox Code Playgroud)
链接:http://niamco.com/cp/problem.html
当用户更改任何数量文本框时,预计文本框会val()被警告以及它们是正确的index().我们看到val()输出正确,但index()总是返回0.
由于这val()是正确的,我们应该确保jQuery加载良好并且正常工作.那为什么不应该index()是真的呢?
奇怪的是,我已经研究,无论是val()和index()是jQuery的功能.如果val()是javascript基础,它可以被接受.但是现在,一个jquery Base函数可以工作,而另一个则没有!
.index()获取元素相对于其兄弟姐妹的当前位置.您应该使用正则表达式来获取输入名称之间[和之间的数字].
请改用:
$('input[name^=quantity]').change(function () {
var index = $(this).prop('name').match(/\[(.*?)\]/)[1];
console.log(index);
});
Run Code Online (Sandbox Code Playgroud)
这是工作:http://jsfiddle.net/u8HRq/1/
更新:根据您的更新,这是一个工作小提琴:http://jsfiddle.net/qbmAU/2/
首先id应该是唯一的,所以我已经将它们更改为类并更新了change事件的选择器.
我也有.index()工作:
$(this).index('.quantity')
Run Code Online (Sandbox Code Playgroud)
index()通常通过返回相对于匹配兄弟姐妹的位置来工作,这就是我和j08691的答案正常工作的原因.但是,如果元素不是兄弟元素,那么您可以将选择器作为参数传递.这将返回index当前元素相对于匹配元素的值.
| 归档时间: |
|
| 查看次数: |
9906 次 |
| 最近记录: |