在Containerless'if'绑定KnockOut中访问$(“#abc”)

时间:2016-08-24 12:23:52

标签: jquery html knockout.js

我有很少的输入元素包含在'if'绑定上。当我从其中一个元素打开一个弹出窗口并将一个值从弹出窗口设置为开启时出现问题,弹出窗口显示找不到元素。  这是代码。

<!-- ko if: enableCustomerCode() -->
<a href="#" onclick="return getCustomerList();">
   <img src="<%=path%>/images/blueSearch1.JPG" alt="Search Customer" border="0" height="16" />
</a>
<input type="hidden" id="customername" />
<input type="hidden" id="customerid" />
<input type="hidden" id="customercode" />
<input type="hidden" id="custOuId" />
<input type="hidden" id="custOuCode" />
<input type="hidden" id="customerallcurrency" />
<!-- /ko -->

function onPopUpClose() {
    modal.orderBooking().customerCode($("#customercode").val());
}

它表示$(“#customercode”)。val()为null或未定义。

抱歉,这是我的代码问题,但现在jquery自动完成功能无效

autoCompleteJQ($("#abc"), "ENTITYNAMEFORORDER", function(suggestion) {
        modal.orderBooking().customerId(suggestion.dbId);
        modal.orderBooking().customerCode(suggestion.id);
        modal.orderBooking().customerName(suggestion.code);
    });

此处abc位于if绑定

1 个答案:

答案 0 :(得分:1)

你正在编写jQuery并将一些Knockout混入其中。这不是Knockout的工作方式。 Knockout需要控制DOM。 #abc可能在您查找时不存在,因为它位于if部分。

您应该创建一个自定义绑定处理程序,以便Knockout在插入节点时可以调用autoCompleteJQThis may be what you need