关于跟随Jquery函数获取脚本错误

时间:2012-03-15 21:00:12

标签: jquery

var clickable = ApplyClickableLinkToClass($j(".rc_blueBtn"));
setTimeout(clickable, 1000);

但是,如果我这样称呼它,则不会弹出脚本错误:

ApplyClickableLinkToClass($j(".rc_blueBtn"));

方法如下:

ApplyClickableLinkToClass = function(selectedElements) {
    // Go through each of the passed in selections and try to apply a link to them
    $.each(selectedElements, function() {
        var linkElement = $("a:first:not(.do-not-apply-clickable-link)", $(this));
        var link = linkElement.attr("href");
        if (!IsNullEmptyOrUndefined(link)) {
            $(this).click(function(firstLink) {
                var divToLink = firstLink;
                return function() {
                    $(divToLink).unbind('click');
                    if (divToLink.attr("target") != "_blank") {
                        window.location = link;
                        return false;
                    }
                };
            }(linkElement));
        }
    });
}

错误只是一个js弹出窗口“此页面上的脚本中出现错误”

2 个答案:

答案 0 :(得分:2)

您的clickable变量设置为调用 ApplyClickableLinkToClass函数的返回值,该函数未定义。因此,通过将clickable传递给setTimeout,您将传递未定义的内容。

试试这个:

setTimeout(function() {
   ApplyClickableLinkToClass($j(".rc_blueBtn"))
}, 1000);

// OR

var clickable = function() {
   ApplyClickableLinkToClass($j(".rc_blueBtn"))
}

setTimeout(clicable, 1000);

答案 1 :(得分:0)

setTimeout()期望第一个参数是一个函数,或者你想要执行的源代码,作为一个字符串(这个版本通常被弃用)。但是你传递了ApplyClickableLinkToClass()函数的结果,而不是函数本身。

你想要这样的东西:

var clickable = function() {
    ApplyClickableLinkToClass($j(".rc_blueBtn"));
};
setTimeout(clickable, 1000);