Слушатель событий Jquery для объектов javascript - PullRequest
1 голос
/ 14 мая 2011

Я прошу прощения, если об этом уже спрашивали, но есть ли способ добавить прослушиватель / обработчик событий в объект Javascript? Предпочтительно использовать JQuery.

Например:

var foo;
$(foo).bind('change', function() {
   alert("Foo has changed!");
 });

Я пробовал это, но ничего не происходит. Это работает только с элементами DOM?

EDIT: Мне нужно, чтобы событие срабатывало каждый раз, когда аудио или видео теги выдают ошибку. Первоначально я использовал интервал, чтобы проверить, была ли ошибка, «media.error», объект нулевым, но это использует избыточную вычислительную мощность, и я хотел бы избежать этого.

РЕДАКТИРОВАТЬ 2: Очевидно, я поступил неправильно, проще всего было добавить свойство "onerror" к тегу video / audio.

Ответы [ 4 ]

1 голос
/ 14 мая 2011

Я согласен с Cheeso, что для вас важнее указать, что вы на самом деле хотите сделать, однако одним из обходных путей для вашего конкретного вопроса может быть сохранение вашей переменной внутри объекта и предоставление доступа только через getter / setter, тогда вы можетеделай что хочешь в сеттере.например,

function data() {
    var foo = 0;

    this.setFoo = function(newVal) {
        foo = newVal;
        alert(foo);
    };
}

var theData = new data();

theData.setFoo(5);
0 голосов
/ 25 января 2013

HTML / Элементы / аудио

    var foo;
    $(foo).bind('error', function() {     
       //your code here
    });
0 голосов
/ 28 июля 2011

Вы можете попробовать: http://higginsforpresident.net/js/static/jq.pubsub.js

См. http://weblog.bocoup.com/publishsubscribe-with-jquery-custom-events

Или использовать каркас, такой как backbone / underscore или knockout.js.

0 голосов
/ 14 мая 2011

Да, это правильно.Вы не можете сделать «наблюдателя переменной».Для переменных не происходит событие, когда они изменяются.

Что вы действительно пытаетесь сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...