2015-11-16 4 views
0

Мой метод почты получает объект с путём к динамическому созданному pdf, и я хочу открыть pdf. Но некоторые браузеры показывают blocked popup в таких функциях, как window.open(). Тогда я пытаюсь создать якорь и вызвать щелчок на нем, но не похож на работу:jQuery динамический якорь не работает

$http.post('/Export/Create', params).success(function (o) { 
    load.fadeOut(function() { 
     if (o.Path.match(/\.pdf$/)) { 
      console.log('returned PDF'); 
      var a = $('<a></a>').appendTo('body'); 
      a.attr({ 'href': o.Path, 'target': '_blank' }); 
      a.trigger('click'); 
     } 
     // else ... 
    }); 
}).error(function (x) { console.log(x); }); 

Я получаю returned PDF сообщений, так что проблема с динамическим якорем.

Заранее спасибо.

+0

Связанный http://stackoverflow.com/questions/6068266/jquery-how-to-trigger-anchor-links-click-event#answer-12166799 Также Связанный http://stackoverflow.com/questions/773639/how -can-i-simulate-an-anchor-click-via-jquery – Stryner

+0

вы можете попробовать 'a.click()' –

+0

@MateiMihai. Все еще не работает :( –

ответ

1

При добавлении динамического содержимого после загрузки дома, обработчики событий не будут существовать для добавленных элементов, так что вы должны использовать что-то вроде

$(document).on("click", "a.anchor_class", function() { 
    //click code here 
} 

«а» во втором параметре в тип элемента, за которым следует имя класса, чтобы подключить слушателя к примеру "Button.classname".

Кроме того, вышеуказанная функция .on("click") может существовать на странице перед загрузкой динамического содержимого. Он будет легко регистрировать клики после добавления <a> в дальнейшем (до тех пор, пока вы добавите соответствующее имя класса в <a>).

+0

Это не тот случай. Я пытаюсь просто вызывать действие по умолчанию для якорного тега. –

+0

Я вижу, но он все равно не будет запускаться, потому что нет прослушивателя событий, ожидающего вызова триггера. Таким образом, вы должны сделать это, используя способ, которым я разместил, и называть что-то вроде $ (this) .trigger(), в методе. – Whiplash450

Смежные вопросы