问题描述
||
http://www.gamingunion.net/
http://www.gamingunion.net/forums/
当您单击游戏背景时,它将打开一个Amazon.com链接。由于论坛上的某些原因,它失败了,并给出错误$(event.target).closest不是一个函数。
http://www.bungieunion.com/gamingunion/js/forum.js
第二个功能是有问题的。 jQuery版本在两个页面上都是相同的,因此我无法弄清楚可能是什么问题。
解决方法
看起来目标是HTML DOM对象,而不是jquery对象。我会测试一下是否event.target是jQuery的实例,如下所示:
var target = (event.target instanceof jQuery) ? event.target : jQuery(event.target);
这将确保在调用.closest()之前,目标对象是jQuery对象。
编辑:在使用noConflict的情况下将$更改为jQuery
编辑#2:我将整个第二种方法更改为:
var _body = jQuery(\"body\");
_body.click(function() {
// affilate takeover functions
if( _body.attr(\'id\').length
&& _body.closest(\'header\').length == 0
&& _body.closest(\'#wrapper > nav\').length == 0
&& _body.closest(\'#leaderboard > div\').length == 0
&& _body.closest(\'#wrapper2\').length == 0
&& _body.closest(\'body > footer\').length == 0
&& _body.attr(\'name\') != \'userfile\'
&& _body.closest(\'.ui-datepicker-calendar\').length == 0
&& _body.closest(\'.ui-datepicker-prev\').length == 0
&& _body.closest(\'.ui-datepicker-next\').length == 0
&& _body.closest(\'.editor_control_bar\').length == 0
&& _body.closest(\'.ui-autocomplete\').length == 0
&& _body.closest(\'#fancybox-overlay\').length == 0
&& _body.closest(\'#fancybox-wrap\').length == 0
&& _body.attr(\'href\') != \'#shoutbox\'
&& !_body.hasClass(\'ui-button-text\')
&& _body.closest(\'.ui-dialog\').length == 0) {
// variables
var affiliate_url = jQuery(\"input[name=affiliate_url]\").val();
window.open(affiliate_url);
}
});
,我认为在加载脚本并调用,2ѭ之后,亚马逊联盟脚本正在加载jQuery 1.2.6版。如果在IE9的监视面板中查看$
和jQuery
,您会发现它们并不相同。加载的脚本是
http://z-ecx.images-amazon.com/images/G/01/browser-scripts/us-site-wide-1.2.6/site-wide-10148190434.js._V178546632_.js
这是jQuery的1.2.6版本。请注意,版本1.3中引入了“ 6”