我不太确定如果我没有在正确的范围内使用这个或什么,但我有一个脚本,基本上捕获链接点击,并导致页面淡出,然后再去链接的页面.但是,如果链接是
javascript onclick,则脚本失败.这是我的代码:
<script type="text/javascript"> pageObj = { init: function(){ $("body").fadeTo("slow",1); },redirectPage: function(redirect){ window.location = redirect; },linkLoad: function(location){ $("body").fadeOut(1000,this.redirectPage(location)); } }; $(document).ready(function() { pageObj.init(); $("a").click(function(e){ e.preventDefault(); if (this.attr('onclick') !== undefined) { eval(this.attr('onclick').val()); } else { var location = this.href; pageObj.linkLoad(location); } }); }); </script>
解决方法
虽然diodeus是正确的,您需要在使用attr()(它是一个jQuery集合的方法,而不是HTMLElement)之前将其包装在jQuery集合中,您可以跳过attr().
$("a").click(function(e){ var location; e.preventDefault(); if ($.isFunction(this.onclick)) { this.onclick.call(this,e); } else { location = this.href; pageObj.linkLoad(location); } });
请注意,我使用该属性(当HTML文档加载时,属性通常预加载到属性中,其中on_______属性被预加载为方法.另请注意,我使用this.onclick.call()而不是eval(),设置正确的对于onclick方法,并确保访问事件对象作为参数.