通过jquery选择器查找knockout元素

时间:2013-01-22 19:03:44

标签: jquery knockout.js

我有一些用knockout渲染的元素:

<div class="chart" data-bind="attr: {'data-chart-id': id}"></div>

然后我想通过数据属性找到jquery元素:$("[data-chart-id='1']")

但是当我在模型中执行此操作时,模型的data-chart-id尚未分配。

如何处理?

2 个答案:

答案 0 :(得分:3)

您可以使用setTimeout等待绑定完成或写入custom binding

HTML:

<div class="chart" data-bind="customAttribute: {chartId: id}"></div>

JS:

ko.bindingHandlers.customAttribute = {
    init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
         var value = ko.utils.unwrapObservable(valueAccessor().chartId); 
         $(element).attr('chartId', value);
         // then you can write your jquery code here
    }
};

答案 1 :(得分:1)

试试这个:

$("body *[data-chart-id='1']");