Как запустить триггеры событий и связанные с ними методы синхронно, используя jQuery? - PullRequest
1 голос
/ 27 ноября 2009

Функция ниже вызывается при готовности страницы и предназначена для имитации щелчков по различным ссылкам привязки и запуска методов привязки этих привязок, чтобы воспроизводить тот же DOM, который будет настроен путем ручного нажатия на те же ссылки. 1001 *

function useAnchor() {
    var uri = document.location.toString();
    if (uri.match('#')) {
        var anchor = '#' + uri.split('#')[1];
        $('.links a[href="/' + anchor.split('/')[0] + '/"]').click();
        $('.links a[href="/' + anchor.split('/')[0] + '/' + anchor.split('/')[1] + '/"]').click();
    }
}

Из двух триггеров событий первый успешно выполняет связанный метод. Тем не менее, целевой якорь второго события не существует, пока метод первого события не будет завершен, поскольку он вставляет целевой якорь второго события в DOM. Второй триггер дает сбой, и я предполагаю, что это связано с тем, что он не может найти свою целевую привязку, что предполагает, что первый триггер не полностью завершен во время вызова второго триггера. Я бы не подумал, что это так - или мой код каким-то образом работает в нескольких потоках?

Короче говоря, мне нужно, чтобы кто-то подтвердил, что триггеры и их методы выполняются совершенно синхронно, поэтому я знаю, если я нахожусь в поиске ошибок в неправильном месте. Большое спасибо заранее.

1 Ответ

0 голосов
/ 27 ноября 2009

Может быть, что-то вроде этого будет работать (я не пробовал):

$('.links a[href="/' + anchor.split('/')[0] + '/"]').click(function (){
  var s = '.links a[href="/' + anchor.split('/')[0] + '/' + 
          anchor.split('/')[1] + '/"]';
  $(s).click();
}).click();
...