jQuery没有在我的网站上工作

时间:2012-02-14 01:44:07

标签: javascript jquery undefined typeerror

我有这段代码:http://jsfiddle.net/AH4As/3/

它适用于小提琴,但在我的网站上却没有。我在Web Inspector中收到此错误

Tracking.js:4TypeError: 'undefined' is not an object (evaluating '$('a').attr('onClick').replace')

有人知道什么是错的吗?

这是我的源代码:http://jsfiddle.net/AH4As/24/

5 个答案:

答案 0 :(得分:0)

<强>更新:

$(document).ready(function(){
    $('a').attr('onClick', $('a').attr('onClick').replace("window.open('", "window.open('http://example.com/"));
});

​

http://jsfiddle.net/AH4As/10/

这里有一个警告,告诉你代码已被更改: http://jsfiddle.net/AH4As/11/

答案 1 :(得分:0)

尝试:

$('a').removeAttr('onclick').click(function(){window.open('http://example.com');return false;});

答案 2 :(得分:0)

怎么样:

$(document).ready(function(){
    $('a').removeAttr('onclick');
    $('a').click(function(){
        window.open('http://www.example.com', '','location=1,menubar=1,scrollbars=1,status=1,resizable=1,width=635,height=460');
    });
});

答案 3 :(得分:0)

使用jQuery 1.4,replace无法(可靠地)onclick

'function' === typeof $('a').attr('onclick');

并且函数没有replace方法:

'undefined' === typeof $('a').attr('onclick').replace;

你正在获得一个函数,因为jQuery返回属性值而不是属性值。

这就引起了混淆,因为jQuery在1.6中添加了.prop()方法 - 所以很明显你需要属性值,而不是属性值:

// with jQuery 1.6+
'string' === typeof $('a').attr('onclick');

现在,如果您目前无法更新jQuery,可以尝试在toString之前插入replace

$('a').attr('onclick').toString().replace(...)

旁注:为了更好地耦合原始值和调整值,您可以考虑使用.attr()的替代语法:

$('a').attr('onclick', function (i, value) {
    return value.toString().replace('window.open(\'', 'window.open(\'http://example.com/'));
});

答案 4 :(得分:0)

页面上的其他锚点使查询失败,简而言之这是我的解决方案:

<script type="text/javascript">
$(document).ready(function(){
$('a[onclick^="window.open(\'TrackPackage.asp"]').attr('onClick', $('a[onclick^="window.open(\'TrackPackage.asp"]').attr('onClick').replace("window.open('", "window.open('http://eastcoasttvs.com/"));
});
</script>