【问题标题】:Data-bind works fine but retrieving DOM value with jQuery gives "undefined"数据绑定工作正常,但使用 jQuery 检索 DOM 值会给出“未定义”
【发布时间】:2019-03-25 15:05:33
【问题描述】:

我有几个 DOM 元素,绑定到我通过 API 调用检索的对象。

<input id="max_row_abs_discount" 
       name="settingsHelper[max_row_abs_discount]" 
       data-bind="value: settings.max_row_abs_discount">

数据绑定工作正常(在本例中,输入显示的数据为 1500)。

如果我尝试使用 jQuery 访问该值

let testVariable = $('#max_row_abs_discount').val()

它给出“未定义”作为回报。

编辑:

这是我尝试访问它的完整代码:

    .on('click', '#change_all_table_settings', function(){
       let testVariable = $('#max_row_abs_discount').val()
    })

如果语法看起来很奇怪,那是因为我使用的是 Magento。

有人吗?

谢谢!

【问题讨论】:

  • 1) 数据绑定很可能是由 knockout.js 完成的,而不是 jquery(查看this question 了解更多详情); 2) 你到底什么时候试图访问那个值?
  • 对不起,我还是 jQuery 和淘汰赛的新手。我稍后(绑定完成后)尝试通过“onclick”功能访问它。选中复选框时,我想检索该值并将其更改为我决定的默认值。
  • 为什么要更改DOM(视图)中的值而不是淘汰状态(模型)中的值?
  • 因为我必须使用表格发送新信息。 1)我可以使用淘汰赛状态来做到这一点吗? 2)如果我在淘汰状态下更新值,DOM是否会自行更新?
  • @raina77ow 您对第 2 点的回答解决了我的问题。我不知道数据绑定是动态的。我想是自学成才的问题,我想先练习而不学习理论。克里斯,是的,这就是我要做的。感谢克里斯,特别感谢raina77ow!

标签: javascript jquery data-binding


【解决方案1】:

对于那些可能遇到我的问题的人来说,淘汰赛更有意义。 使用 jQuery 访问 observable 模型中已经可用的内容是不可能的,而且这确实不是要走的路。 改变 observable 的值对我有用。

【讨论】:

    猜你喜欢
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 2018-07-18
    • 2017-09-26
    • 2015-09-28
    • 1970-01-01
    相关资源
    最近更新 更多