javascript event.target抛出错误(但它有效)

javascript event.target抛出错误(但它有效),javascript,jquery,Javascript,Jquery,长话短说,我正在使用ajax制作一个小型网站,但更多的是针对手机 我劫持了一些链接,在测试firebug时,我在点击时发现了这个错误 链接 现在的问题是,虽然我得到了这个错误,但当我在普通桌面上测试它时,它确实起作用,当我在移动设备(ios)上测试它时,它也起作用并加载AJAX内容 我想修复它的原因是…除了有一个错误,我还有一个小问题,我不确定这是否是因为这个,所以,尝试一个接一个地修复 Heere是我为劫持移动站点链接而创建的两个功能 javascript: //~~~~~~~~~~~~~~~

长话短说,我正在使用ajax制作一个小型网站,但更多的是针对手机

我劫持了一些链接,在测试firebug时,我在点击时发现了这个错误 链接

现在的问题是,虽然我得到了这个错误,但当我在普通桌面上测试它时,它确实起作用,当我在移动设备(ios)上测试它时,它也起作用并加载AJAX内容

我想修复它的原因是…除了有一个错误,我还有一个小问题,我不确定这是否是因为这个,所以,尝试一个接一个地修复

Heere是我为劫持移动站点链接而创建的两个功能

javascript:

//~~~~~~~~~~~~~~~~~~~~~~~~~~~functions for mobile index load AND hijacking app      

function loadPage(url){
        if( url == undefined){
            $('#contentHere').load('index.html #content', hijackLinks);
                window.location.hash = mainHash;
        } else {
            $('#contentHere').load(url + '#content', hijackLinks ); 
        }
    }


    function hijackLinks(e){
        var myurl = e.target.href;
        e.preventDefault();
        loadPage(myurl);
        mainHash = window.location.hash = $(this).attr("href");
        console.log(mainHash);

    }
有人能帮我吗?我该如何解决这个问题


感谢高级版。

e.target指最初触发事件的对象(通常是DOM元素)。如果您只是直接调用
jacklinks
,而不是作为事件处理程序,那么
e
当然不会引用事件,因此
e.target
是未定义的。我猜您也在通过单击处理程序或类似的方式调用
jacklinks
,因此在该场景中它将按预期工作

您有两个选项—要么更改
jacklinks
的内部结构,使其不依赖于将事件作为参数传递(可能不是一个好主意),要么将所有对
jacklinks
的直接调用改为通过DOM元素事件。例如,您的原始代码:

$('#contentHere').load('index.html #content', hijackLinks);
可更改为:

$('#contentHere').load('index.html #content', function() {
    $('a.whatever').trigger('click');
});

更改
a.which
选择器以指向被劫持的实际链接(您没有显示任何标记,因此我不知道会是什么),然后只要您正确绑定了单击处理程序(或触发事件所需的任何UI交互),您可以依靠使用事件参数调用
jacklinks

不确定,但是jQuery不也包装事件对象吗?你是否尝试过添加(
if(e.get){target=e[0].target | e[0].srcmelement;}
我理解你说的一切,但是,我如何定位链接,以便执行“防止默认设置”没有使用e.target.href?因为当我删除它时,它会删除错误,但是链接不会去任何地方。哈哈。提前感谢谢谢我理解,我在某个地方有一个“jacklinks”函数DEEEP正在进行调用……谢谢也许你也能帮我做这个=)
$('#contentHere').load('index.html #content', function() {
    $('a.whatever').trigger('click');
});