jQuery.closest()可以在一个页面上工作,但不能在另一个页面上工作

jQuery.closest()可以在一个页面上工作,但不能在另一个页面上工作,jquery,Jquery,http://www.gamingunion.net/forums/ 当你点击游戏背景时,它会打开一个Amazon.com链接。由于论坛上的某些原因,它失败并给出错误$(event.target)。最近的不是函数 第二个功能就是所讨论的功能。jQuery版本在两个页面上都是相同的,因此我无法确定问题可能是什么。看起来目标是HTML DOM对象,而不是jQuery对象。我将测试event.target是否是jQuery的实例,如下所示: var target = (event.target in

http://www.gamingunion.net/forums/

当你点击游戏背景时,它会打开一个Amazon.com链接。由于论坛上的某些原因,它失败并给出错误$(event.target)。最近的不是函数


第二个功能就是所讨论的功能。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);
    }
});

我认为amazon affiliate脚本是在您的脚本加载后加载jQuery版本1.2.6,并且在您调用
jQuery.noConflict()
之后加载的。如果查看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版。请注意,
.closest
是在1.3版中引入的。你知道为什么它会在论坛上失败,而不是在主网站上失败吗?呃,我想我发现了问题,显然是另一个.js文件干扰了它。@Shawn,冷静,不用担心。对不起,耽误了这么长时间。我很难调试它,因为我在实际的网站上找不到相同的js文件来设置断点,所以我实际上只是使用Chrome中的控制台来清除现有的点击事件,并替换我上面写的那个。无论如何,祝你网站好运,到目前为止看起来不错。