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