0

所以我有一个有趣的问题。尽管我已经找到了解决方案,但我想知道您对此有何看法。

详细信息:我有一个用于扫描一些 ID 的 javascript 前端脚本。为了使它对用户更加友好,该脚本会保存所有扫描的 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]”当然取决于他点击的元素。

我不知道如何从这个字符串值中获取索引。我不想使用“拆分”或正则表达式过滤器之类的变通方法。

为了完成任务,我只是在输入中添加了一些数据属性,其中索引存储为普通变量,就像:

<input type="hidden" value="blub;987654;foo" name="data[Stock][1]">

我的问题是,你将如何解决这个问题,或者如何从存储在 name 属性中的字符串值“data[Stock][1]”中获取索引。我尝试了一些 eval() 函数,但没有得到有用的结果。

4

1 回答 1

0

如果是关于获取事件发生在哪个 div/按钮的索引,在页面加载时绑定 onclick 事件并获取索引会不会很好?

$('.single-scan-output-close').click(function (event) {
    alert($(this).index());
});
于 2013-07-16T17:15:19.477 回答