Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Почему физический переход есть несмотря на preventdefault (https://javascript.ru/forum/dom-window/62746-pochemu-fizicheskijj-perekhod-est-nesmotrya-na-preventdefault.html)

imedia 27.04.2016 08:51

Почему физический переход есть несмотря на preventdefault
 
Почему
e.preventDefault(); есть а физический переход по ссылке существует

document.addEventListener("DOMContentLoaded",query_send);
 function query_send(){
var elems = document.querySelectorAll('.item a');
    for (var i = 0, length = elems.length; i < length; i++) {
        elems[i].addEventListener('click', function(e){
           e.preventDefault();
           sendAjax(this.href);
        });
}

function sendAjax(url) {
        $.ajax({
            url: '/server/fix_in_session.php', 
            type: "POST",        
            data: ({ url:url, sesid: '<?=session_id();?>' }),
            cache: false,
            error: function (xhr, ajaxOptions, thrownError) {
                
            },
            success: function (data) { 
	window.location.href=url;
            }
        });
    }

}

Яростный Меч 27.04.2016 15:01

возможно, элементы '.item a' появляются уже после вызова query_send.
если так, то используй делегирование событий

Dilettante_Pro 27.04.2016 15:26

imedia,
Переход по ссылке вы отменили, а потом своими же руками пишете:
window.location.href=url;

И что вы хотите после этого?
Цитата:

При изменении любых свойств window.location, кроме hash, документ будет перезагружен
http://javascript.ru/window-location


Часовой пояс GMT +3, время: 06:48.