Я вижу 2 проблемы с кодом:
- getElementsById - вы уверены, что этот метод существует?
Каждый ID должен существовать только один раз на странице. Когда вы хотите найти элемент по его ID, вы можете вызвать getElementById (единственное), и он вернет элемент. Поскольку только один элемент должен иметь данный идентификатор, метода getElementsById (множественного числа) нет.
Ваше привязку foreach в сочетании с жестко закрепленным идентификатором «anchor» приведет к нескольким элементам с идентификатором привязки. Это не-нет. Возможно, используйте класс «якорь» вместо идентификатора «якорь».
<a class='anchor' href='#' data-bind='click: $root.save' onclick='alert("a");'>Text</a>
Таким образом, я предполагаю, что getElementsById не возвращает ничего, чтобы нажать.
- нажмите()
Даже если вы были в состоянии получить элемент назад от getElementsById, нет никакого метода нажмите() на тех элементах.
В качестве альтернативы вы можете использовать jQuery для получения элементов, а с помощью объекта jQuery вы можете вызвать метод click(). Или вы можете взять элемент, возвращенный из getElementById, обернуть его в jQuery, а затем вызвать click().
$('.anchor').click();
Вот рабочий пример: http://jsfiddle.net/tlarson/t4yZL/1/
Есть определенный браузер, который вы видите проблему в ? http://jsfiddle.net/rniemeyer/kAA4v/ –
Вы забыли позвонить в "applyBindings"? – Tyrsius
Вместо root вам нужны $ parent или $ data? – segFault