Вы не сможете (надежно) 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/'));
});