ノックアウトでレンダリングされたいくつかの要素があります:
<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']");