我有一些用淘汰赛渲染的元素:
<div class="chart" data-bind="attr: {'data-chart-id': id}"></div>
然后我想通过数据属性找到 jquery 元素:$("[data-chart-id='1']")
但是当我在模型中执行此操作时,data-chart-id
尚未分配模型。
如何处理?
我有一些用淘汰赛渲染的元素:
<div class="chart" data-bind="attr: {'data-chart-id': id}"></div>
然后我想通过数据属性找到 jquery 元素:$("[data-chart-id='1']")
但是当我在模型中执行此操作时,data-chart-id
尚未分配模型。
如何处理?
您可以使用 setTimeout 等待绑定完成或编写自定义绑定:
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
}
};
试试这个:
$("body *[data-chart-id='1']");