如何使用jQuery获取ko observable的值?

时间:2016-01-14 08:16:35

标签: jquery codeigniter knockout.js

我在html页面上有一个span

<span id="Amount" value="<?php echo $userProvidedAmount ; ?>"></span>

在我的淘汰代码中,我需要将此值添加到observable并使用jQuery,但由于某种原因我无法获得该值。

self.amount = ko.observable($('#Amount').val());

有没有办法获得价值?我已经检查过该值有一些值,但是我无法在observable中获取数据。

2 个答案:

答案 0 :(得分:2)

jQuery的val()函数仅适用于输入元素。
你试图在span元素上使用它,所以它失败了。

检索value属性的最简单方法是使用attr():

amount = $('#Amount').attr('value');

但是:跨度代码不能具有&#34;值&#34;标准HTML中的属性。最好使用数据属性:

<span id="Amount" data-value="<?php echo $userProvidedAmount ; ?>"></span>

...然后你可以使用jQuery data()函数检索它:

amount = $('#Amount').data('value');

答案 1 :(得分:2)

如果你想使用 KnockoutJS ......

然后:哎呀!不要混淆jQuery和Knockout。如果您正在使用Knockout,请尝试保持视图“哑”,即反映视图模型的状态。使用Knockout的数据绑定功能来填充视图。例如:

<span id="Amount" data-bind="text: amount"></span>
self.amount = ko.observable(<?php echo $userProvidedAmount ; ?>);

通常你不想直接混用PHP和JS ,而你会有这样的东西:

<span id="Amount" data-bind="text: amount"></span>
<script>
window.myNamespace.initialData = {
    amount: <?php echo $userProvidedAmount ; ?>
};
</script>
self.amount = ko.observable(window.myNamespace.initialData.amount);

或者您的框架或自制程序设置类似地允许的任何方式。

如果您不一定想使用KnockoutJS ......

说了这么多,如果你不打算使用KnockoutJS,你应该看看@KWeiss' answer