我在html页面上有一个span
。
<span id="Amount" value="<?php echo $userProvidedAmount ; ?>"></span>
在我的淘汰代码中,我需要将此值添加到observable并使用jQuery,但由于某种原因我无法获得该值。
self.amount = ko.observable($('#Amount').val());
有没有办法获得价值?我已经检查过该值有一些值,但是我无法在observable中获取数据。
答案 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。