我正在使用一些代码来查找社交媒体内容的任何@和#标签。循环重新每隔x秒触发一次。在清爽循环之外,它工作得很好,但在里面它不会开火。以下是代码:
(function ($) {
$(document).ready(function () {
var refreshId = setInterval(function () {
$('#main').fadeOut("fast").load(location.href + " #main>*", "").fadeIn("fast");
//apply any new hashtags
/*
* Hashtags
*/
hashtag_regexp = /#([a-zA-Z0-9]+)/g;
function linkHashtags(text) {
return text.replace(
hashtag_regexp,
'<span class="hashtag">#$1</span>');
}
atMention_regexp = /@([a-zA-Z0-9]+)/g;
function linkatMention(text) {
return text.replace(
atMention_regexp,
'<span class="mention">@$1</span>');
}
$('p').each(function () {
$(this).html(linkatMention($(this).html()));
$(this).html(linkHashtags($(this).html()));
});
}, 10000);
});
})(jQuery);
答案 0 :(得分:1)
我对你的代码进行了一些修改,但现在工作正常:
setInterval
之外,因为它们不应该一遍又一遍地声明。html
修改调用以加快速度。jQuery(function ($) {
/*
* Hashtags
*/
var hashtag_regexp = /#([a-zA-Z0-9]+)/g;
function linkHashtags(text) {
if (text.indexOf('"hashtag"') == -1) {
return text.replace(
hashtag_regexp,
'<span class="hashtag">#$1</span>');
}
return text;
}
var atMention_regexp = /@([a-zA-Z0-9]+)/g;
function linkatMention(text) {
if (text.indexOf('"mention"') == -1) {
return text.replace(
atMention_regexp,
'<span class="mention">@$1</span>');
}
return text;
}
function updateMentions() {
$('p').each(function () {
var $this = $(this);
$this.html(linkatMention(linkHashtags($this.html())));
});
}
var refreshId = setInterval(function () {
$('#main').fadeOut("fast").load(location.href + " #main>*", "").fadeIn("fast");
//apply any new hashtags
updateMentions();
}, 10000);
updateMentions();
});
提示:您可以将文档就绪$(function(){});
的快捷语法与jQuery(function ($) {});
一起使用,以便在本地范围内定义$
。