首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >属性从Selector开始=属性从Selector开始?

属性从Selector开始=属性从Selector开始?
EN

Stack Overflow用户
提问于 2018-11-13 15:33:17
回答 2查看 98关注 0票数 0

我正在尝试对另一个开发人员编写的错误进行故障排除,并且我不理解属性从选择器开始的方式。

在对话框中有具有唯一设置id的输入字段。

然后当用户提交时,函数就像这样附加在一起,

代码语言:javascript
复制
$('#dialogform').dialog({
             autoOpen: false,
             height: 925,
             width: 1025,
             modal: true,
             buttons: {
                 Submit: function () {
 var JQuerycollection = $('#dialogform').data();
                     if (JQuerycollection.isClosed.val() == "False") {

                         JQuerycollection["msg"] = "Submit";
                         JQuerycollection[$('[id^="ETI"]').prop('id')] = $('[id^="ETI"]').val();

然后将其压缩并通过ajax发送到后端:

代码语言:javascript
复制
data: JSON.stringify({ JSONcollection: JQuerycollection, dlgMsg: "Submit" })

对于ID,有两个输入元素以"ETI“开头,ETI_1234和ETI_1235。当我在FireFox中使用调试器时,我只能看到第一个被添加为属性(这是bug),"ETI_1234 = 17“

引用JQuery API:https://api.jquery.com/attribute-starts-with-selector/

从API中,我理解了当右侧不使用另一个选择器时,选择器是如何工作的,但是我不理解在我正在排除的代码中如何使用它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-13 15:45:47

如果要向对象添加所有元素,则需要更改:

代码语言:javascript
复制
JQuerycollection[$('[id^="ETI"]').prop('id')] = $('[id^="ETI"]').val();

至:

代码语言:javascript
复制
$('[id^="ETI"]').each(function(){
  JQuerycollection[this.id] = this.value;
});

$('[id^="ETI"]').prop('id')只返回单个值,而prop()只返回单个值。如果选择器的结果堆栈有多个元素,它将只得到第一个结果的值,而不是所有的结果。

票数 1
EN

Stack Overflow用户

发布于 2018-11-13 15:50:39

这里的错误是,$('[id^="ETI"]')是一个可能返回多个项的选择器,但是当与.prop().val()等方法一起使用时,只会返回多个项的第一个项的值。

要解决这个问题,您应该迭代可能的多个元素$('[id^="ETI"]'),然后对每个元素进行值分配。

类似于:

代码语言:javascript
复制
$.each($('[id^="ETI"]'), function(i, el) {
    JQuerycollection[$(el).attr('id')] = $(el).val();
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53284393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档