Как заставить jQuery работать в Jetpack
-
06-09-2019 - |
Вопрос
Я экспериментирую с Jetpack и хотел бы проанализировать все годы на данной html-странице, а затем обернуть год ссылкой на страницу Wiki.Я попробовал код в jquery, и он работает, но теперь я использую его в Jetpack, и он выдает ошибку $(doc).replace не является функцией.Я определенно новичок в Jquery/Jetpack, поэтому, возможно, я что-то упускаю, но ваша помощь очень ценится.
РЕДАКТИРОВАТЬ:Я попробовал предложения, но все еще застрял.Странно то, что это
Функция JQuery работает:
(function($) {
$.fn.clickUrl = function() {
var regexp = /([1-2][0-9][0-9][0-9])/gi;
this.each(function() {
$(this).html(
$(this).html().replace(regexp,'<ahref=\"http://nl.wikipedia.org/wiki/$1\">$1<\/a>')
);
});
return $(this);
}
})(jQuery);
и, по сути, я хотел бы «портировать» эту функцию в Jetpack.
Это «старый» нерабочий порт моей функции JQuery для Jetpack:
jetpack.statusBar.append({
html: "Hyperlink Years",
width: 80,
onReady: function(widget){
$(widget).click(function(){
var regexp = /([1-2][0-9][0-9][0-9])/gi;
var doc = jetpack.tabs.focused.contentDocument;
$(doc).each(function() {
$(this).html(
$(doc).replace(regexp,'<a href=\"http://nl.wikipedia.org/wiki/$1\">$1<\/a>'));
});
return $(doc);
});
}
});
Решение
Я не знаком с реактивным ранцем, но ваш jquery, похоже, довольно запутан.
Если «doc» — это HTML-документ, то выполнение $(doc).each() не имеет смысла.Это будет происходить только один раз, и «this» будет таким же, как doc.
Затем вы выполняете $(doc).replace(regexp,...), но replace() не является функцией jquery.Возможно, вы хотели бы сделать .html().replace(regexp, ...);ОДНАКО, я не рекомендую делать это, потому что это не сработает — в конечном итоге вы просто замените любые цифры в документе, даже если они являются частью другого URL-адреса или HTML-кода страницы.
Для получения дополнительной информации обратитесь к этому вопросу или Google для текстовых узлов jquery:Найти текстовую строку с помощью jQuery?