我有这个可能是“简单”的任务,这绝对是在踢我的屁股。
我的目标是当用户点击链接时,我阻止默认,在其上运行ajax函数,然后按照该链接(即恢复默认值)。我唯一可以工作的是捕获链接的href然后使用window.location - 这不是理想的,因为它不会检测用户是否选择在新窗口/选项卡中打开或在相同的窗口/标签;我认为必须有更好的方法。
然而,发生的事情是默认被阻止,运行AJAX函数但不遵循链接。我要问的是:在函数运行后如何模拟链接点击?
HTML
<a href="some_href" data-id="789">This is the link</a>
的jQuery
$(document).on('click', 'a', function(e, options){
// setup our options
options = options || {};
// get some details from the link
var this_href = $(this).attr('href');
var this_id = $(this).data('id');
// if options aren't set and this link has a data-id attribute
if(!options.stuff_done && $(this_id).length){
e.preventDefault(); // prevent link following
// run some ajax
$.ajax({
url: myAjax.ajax_url,
type: 'post',
data: {
action : 'a_php_function',
post_id : this_id
},
success: function(response) {
// do stuff
}).then(function(){
$(this).trigger('click', { stuff_done: true });
});
} else {
// else if it doesn't have a data-id, do default
}
});
上下文:使用PHP / AJAX检查值('data-id')是否在数组中,如果是,则删除它。此data-id与Wordpress中的帖子ID相关,需要在用户关注该帖子的链接时删除。
因此 - 用户点击链接,数据ID被检查,删除/不从数组中移除,链接被跟踪。
答案 0 :(得分:1)
首先给你的href一个这样的ID:
<a href="some_href" data-id="789" id='#some-link'>This is the link</a>
然后在你的ajax成功部分模拟它的点击:
...
success: function(response) {
$('#some-link').click();
})
...
您可以在触发点击之前检查response
。此外,我认为您不需要.then
以及所有这些。