JQuery не работает на моем сайте - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть этот код: 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 голосов
/ 15 февраля 2012

Другие привязки на странице приводили к сбою запроса, в двух словах, это было мое решение:

<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>
0 голосов
/ 14 февраля 2012

Вы не сможете (надежно) replace на onclick с jQuery 1.4:

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

И у функций нет replace методов:

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

Вы получаете функцию, потому что jQuery возвращает значение свойства , а не атрибут .

Путаница в этом заключается в том, что jQuery добавил метод .prop() в 1.6 - так что ясно, что вам нужно значение атрибута, а не значение свойства:

// 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/'));
});
0 голосов
/ 14 февраля 2012

Попробуйте:

$('a').removeAttr('onclick').click(function(){window.open('http://example.com');return false;});
0 голосов
/ 14 февраля 2012

А как же:

$(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');
    });
});
0 голосов
/ 14 февраля 2012

ОБНОВЛЕНИЕ:

$(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/

...