在通过ajax加载的页面上运行jQuery代码
我正在使用jQuery编写自己的降价脚本:在通过ajax加载的页面上运行jQuery代码,jquery,ajax,Jquery,Ajax,我正在使用jQuery编写自己的降价脚本: function markdown(markdownable) { var bold = /\*\*(\S(.*?\S)?)\*\*/gm; markdownable = markdownable.replace( bold, '<span style="font-weight:bold">$1</span>' ); return markdownable; } $('.content').each(fun
function markdown(markdownable) {
var bold = /\*\*(\S(.*?\S)?)\*\*/gm;
markdownable = markdownable.replace( bold, '<span style="font-weight:bold">$1</span>' );
return markdownable;
}
$('.content').each(function() {
var markdownable = $(this).html(),
content = markdown(markdownable);
$(this).html(content);
});
函数标记(可标记){
var bold=/\*\*(\S(.*?\S)?)\*\*/gm;
markdownable=markdownable.replace(粗体,$1');
返回可标记;
}
$('.content')。每个(函数(){
var markdownable=$(this.html(),
内容=降价(可降价);
$(this.html(content);
});
这是一张工作票
问题是我希望这段代码在通过ajax显示的页面上生效。因此用户点击一个链接:
<a id="kwqe_show_vote_link" href="#">Show Box</a>
下面是该链接的jQuery代码:
$(document).on('click', 'a#kwqe_show_vote_link', function(e) {
e.preventDefault();
e.stopImmediatePropagation();
var $button = $(this);
if ($button.data('disabled'))
return false;
if (kwqommunityEditorBoxCache.votes) {
$('#kwqe_revisions_box').replaceWith(kwqommunityEditorBoxCache.votes);
return false;
}
$button.data('disabled', 1);
var post = $button.data('post');
var $now = $('#kwqe_revisions_box').html();
$('#kwqe_revisions_box').empty().append('<p>' + kwqommunityEditorBoxData.loading
+ '</p>');
$.ajax({
data: {action: 'print_box', kwqe_post: post}
}).done(function(data) {
if (data && $('#kwqe_revisions_box').length) {
$('#kwqe_revisions_box').replaceWith(data);
kwqommunityEditorBoxCache.votes = data;
} else {
$('#kwqe_revisions_box').html($now);
kwqommunityEditorBox.errorMsg('no_ajax_msg', '#kwqe_vote_box_feedback');
}
$(document).trigger('kwqe_print_box');
}).fail(function() {
$('#kwqe_revisions_box').html($now);
kwqommunityEditorBox.errorMsg('no_ajax_msg', '#kwqe_vote_box_feedback');
});
});
$(文档)。在('click','a#kwqe_show_vote_link',函数(e){
e、 预防默认值();
e、 停止即时复制();
var$按钮=$(此按钮);
如果($button.data('disabled'))
返回false;
if(kwqommunityEditorBoxCache.vows){
$(“#kwqe_修订_框”)。替换为(kwqommunityEditorBoxCache.vows);
返回false;
}
$button.data('disabled',1);
var post=$button.data('post');
var$now=$('#kwqe_revisions_box').html();
$(“#kwqe_修订版_框”).empty().append(“”+kwqommunityEditorBoxData.loading
+“”);
$.ajax({
数据:{操作:'print_box',kwqe_post:post}
}).完成(功能(数据){
if(数据和$('#kwqe_修订框')。长度){
$(“#kwqe_修订_框”)。替换为(数据);
kwqommunityEditorBoxCache.vows=数据;
}否则{
$('kwqe_revisions_box').html($now);
errorMsg('no_ajax_msg','kwqe_vote_box_feedback');
}
$(document).trigger('kwqe_print_box');
}).fail(函数(){
$('kwqe_revisions_box').html($now);
errorMsg('no_ajax_msg','kwqe_vote_box_feedback');
});
});
如何确保jQuery标记代码在用户单击链接时显示的页面上正常工作?不确定我是否正确理解了所有内容,但在向框中添加新数据时,您可以尝试类似的操作 编辑:这里我列出了我能想到的所有可能的方法
$("#kwqe_revisions_box").on("DOMSubtreeModified", function() {
$('#kwqe_revisions_box').find('.content').each(function() {
var markdownable = $(this).html(),
content = markdown(markdownable);
$(this).html(content);
});
});
$(document).on('click', 'a#kwqe_show_vote_link', function(e) {
...do you ajax stuff here, as it is now
}).on('click',function(){
setTimeout(function(){
$('#kwqe_revisions_box').find('.content').each(function() {
var markdownable = $(this).html(),
content = markdown(markdownable);
$(this).html(content);
});
});
},500);
});
我只是将它添加到JS文件中,但它不起作用。我可以再次解释我的问题。当用户单击链接时,我需要在通过ajax加载的页面上使用降价代码。你还有其他线索吗?我可以试试吗?谢谢你抽出时间!内容类选择器是否位于kwqe_修订版_框内?在返回缓存数据后,您是否也运行了上面的代码,该缓存数据位于$('#kwqe_revisions_box').replaceWith(kwqommunityEditorBoxCache.vots);。内容类位于kwqe_修订版_框内。我不知道您在返回缓存数据后运行上述代码是什么意思。我只是在JS文件的末尾添加了上述代码。请指教!我编辑了答案。我相信这个代码应该可以做到。我在两个地方运行了降价代码。一个位于.done()处理程序中,另一个位于返回缓存数据的处理程序之上。非常感谢您的耐心等待。难道没有办法使降价代码独立于ajax代码吗?我可以看到您已经在ajax代码中包含了降价。问题是ajax代码是Wordpress插件的一部分,会自动更新。因此,理想情况下,我需要在自己的JS文件中单独添加标记代码。我们还能做到这一点吗?如果我没有解释好,请告诉我。
$(document).on('click', 'a#kwqe_show_vote_link', function (e) {
e.preventDefault();
e.stopImmediatePropagation();
var $button = $(this);
if ($button.data('disabled'))
return false;
if (kwqommunityEditorBoxCache.votes) {
$('#kwqe_revisions_box').replaceWith(kwqommunityEditorBoxCache.votes);
$('#kwqe_revisions_box').find('.content').each(function () {
var markdownable = $(this).html(),
content = markdown(markdownable);
$(this).html(content);
});
return false;
}
$button.data('disabled', 1);
var post = $button.data('post');
var $now = $('#kwqe_revisions_box').html();
$('#kwqe_revisions_box').empty().append('<p>' + kwqommunityEditorBoxData.loading
+ '</p>');
$.ajax({
data: { action: 'print_box', kwqe_post: post }
}).done(function (data) {
if (data && $('#kwqe_revisions_box').length) {
$('#kwqe_revisions_box').replaceWith(data);
kwqommunityEditorBoxCache.votes = data;
$('#kwqe_revisions_box').find('.content').each(function () {
var markdownable = $(this).html(),
content = markdown(markdownable);
$(this).html(content);
});
} else {
$('#kwqe_revisions_box').html($now);
kwqommunityEditorBox.errorMsg('no_ajax_msg', '#kwqe_vote_box_feedback');
}
$(document).trigger('kwqe_print_box');
}).fail(function () {
$('#kwqe_revisions_box').html($now);
kwqommunityEditorBox.errorMsg('no_ajax_msg', '#kwqe_vote_box_feedback');
});
});
$("#kwqe_revisions_box").on('change',function(){
$('#kwqe_revisions_box').find('.content').each(function() {
var markdownable = $(this).html(),
content = markdown(markdownable);
$(this).html(content);
});
});