所以我有一个有趣的问题。虽然我已经找到了解决方案,但我想知道你对它的看法。
详细说明: 我有一个javascript前端用于扫描一些ID。为了使用户更友好,脚本会保存所有扫描的ID并将其存储在数组中。在用户扫描ID之后,它将以div显示并且还放入隐藏输入以进行进一步的提交操作。 这看起来像这样:
<div id="scan_output">
<div class="alert alert-success" style="">
<button class="close single-scan-output-close" data-dismiss="alert">×</button>
<div>ID #66666</div>
<input type="hidden" value="herp;66666;derp" name="data[Stock][0]">
</div>
<div class="alert alert-success" style="">
<button class="close single-scan-output-close" data-dismiss="alert">×</button>
<div>ID #987654</div>
<input type="hidden" value="blub;987654;foo" name="data[Stock][1]">
</div>
<div class="alert alert-success" style="">
<button class="close single-scan-output-close" data-dismiss="alert">×</button>
<div>ID #123456</div>
<input type="hidden" value="foo;123456;bar" name="data[Stock][2]">
</div>
</div>
如您所见,输入中有一些不同的值,因为必须将包含更多信息的格式上传到后端。我刚刚添加了一些虚拟数据。
name属性在第二个维度中存储索引,在后端也很方便,因为你得到一个数组。此索引也是javascript数组的索引,其中存储ID以执行唯一检查,因此如果用户扫描ID两次,则会通知用户。
因此,如果用户意外地扫描了错误的内容,他可以通过单击“x”按钮将其删除。
我的第一次尝试看起来如下。触发“关闭”事件后,我抓住当前关闭的元素:
var $inputElement = $this.parent().find('input[type=hidden]');
var sNameAttribute= $inputElement.attr('name');
name属性现在作为一个简单的字符串存储在“sNameAttribute”中,如下所示:“data [Stock] [1]”或“data [Stock] [2]”当然取决于他点击的元素
我没弄明白如何从这个字符串值中获取索引。我不想使用像“split”或regex-filter这样的解决方法。
为了完成任务,我刚刚在输入中添加了一些数据属性,其中索引存储为普通变量,如下所示:
<input type="hidden" value="blub;987654;foo" name="data[Stock][1]">
我的问题是,您将如何解决此问题,或者如何从名称属性中存储的字符串值“data [Stock] [1]”获取索引。我尝试了一些eval()函数,但没有得到有用的结果。
答案 0 :(得分:0)
如果它是关于获取事件发生在哪个div /按钮的索引,在页面加载时绑定onclick事件并获取索引将不正常?
$('.single-scan-output-close').click(function (event) {
alert($(this).index());
});