我有一个用户脚本通过GM_xmlhttprequest触发一个ajax调用来加载一个带有一些文本和链接到名为“debug”的div的简单页面。这非常有效。现在我想,通过gm_xmlhttprequest请求所请求文档中的每个链接。我不知道为什么我的功能不起作用
$('.ajax, .ajaxn').click(function(event) {
event.preventDefault();
var href = $(this).attr('href');
GM_xmlhttpRequest({
method: "GET",
url: href,
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
onload: function(response) {
$('#debug').html('');
$('#debug').append(response.responseText).fadeIn(5000);
}
});
});
响应中的链接具有类ajaxn,firebug dom / html面板显示响应实际插入到#debug
任何提示?
答案 0 :(得分:2)
问题不明确,但假设您希望触发click
处理程序,如果在#debug
内容中点击链接(而不是自动加载链接或???)。
然后不要使用.click()
方法。使用jQuery's .on()
method会触发当前的以及与选择器匹配的任何节点。
代码变成了:
$(document).on ("click", ".ajax, .ajaxn", function (event) {
event.preventDefault ();
var href = $(this).attr('href');
GM_xmlhttpRequest ( {
method: "GET",
url: href,
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
onload: function (response) {
$('#debug').empty ();
$('#debug').append (response.responseText).fadeIn (5000);
}
} );
} );
另外,请勿使用$('#debug').html('');
使用$('#debug').empty();
。这将更快,而且代码更自我记录。