Вопрос по knockout-2.0, knockout.js, jquery – knockoutjs получает идентификатор элемента через событие click

21

Я использую knockoutjs, и на данный момент у меня есть что-то похожее на это:

<img id="myTab1" data-bind="click: pressedTab.bind($data, '#myTab1')" src="images/image1.png"></img>

Это позволяет мне получить идентификатор элемента в моей модели представления:

pressedTab = function(tab){
    console.log("Element ID: " + tab);
}

Это пишет:

Element ID: #myTab1

Однако оно слишком повторяющееся, чтобы отправлять имя img id в событии click. Есть ли способ отправить IMG ID без явного переписывания его?

У меня ниже ссылка работает с нокаутомstackoverflow.com/questions/31513689/… San Jaisy

Ваш Ответ

3   ответа
54

тчик щелчков KO.

<button id="somebutton" data-bind="click: log">Click Me </button>

var ViewModel = function() {
    this.log = function(data, event) {
        console.log("you clicked " + event.target.id);
    }
};
ko.applyBindings(new ViewModel());

http://jsfiddle.net/madcapnmckay/e8JPT/

Надеюсь это поможет.

Это именно то, что мне было нужно. Большое спасибо! bdev
Это не будет безопасно, если на кнопке есть что-то вроде этого,<button id="somebutton" data-bind="click: log"><span class='fa fa-user'></span>Click Me </button>
благодарю вас. это спасло меня от растягивания волос
Спасибо за этого человека
пропустил это в нокаут-документах. Спасибо
13

currentTarget: он будет возвращать исходный связанный элемент вместо дочернего элемента, когда у вас есть div с вложенными элементами в нем.

Видеть этовопрос

Update

Как упомянул @Ryan - event.currentTarget недоступен для IE8. Для поддержки & lt; = IE8 вы можете использовать:

var target = (event.currentTarget) ? event.currentTarget : event.srcElement;
Вы правы. Я обновил ответ!
Огромное спасибо ...
Обратите внимание, что если вам нужна поддержка IE & lt; 9, currentTarget недоступен для этих версий.
Согласен. vm.yourFn = function (data, event) {var $ target = $ (event.currentTarget) ... прекрасно работает.
1

 <input type="checkbox" data-bind="attr:{id: $data.Id , Qref: '3177'} , click: $root.answerClick">&nbsp;&nbsp;&nbsp;<span data-bind="text: $data.Text , attr:{id: $data.Id}"></span>

код JS

answerClick: function(c, event){
        var element = event.target;
        var qref = element.getAttribute('Qref');
        var click_id = element.id;
        return true;
    }

Похожие вопросы