这是对来自here的指针代码的修改(在原始形式中也以相同的方式打破了btw)。
我的页面上有许多使用以下代码创建的div。我可以告诉输出我的对象到控制台它们都是正确构造的,并且每个对象中都存在所有正确的元素和id。但不知何故,当我点击关闭链接时,传递给ajaxurl的是页面上的FIRST索引,然后是第二个,等等而不是pointer_id
,它是点击的对象的一部分,并在下面定义。正如我所说,控制台中的对象是完美的,具有正确的值。但发布的内容是错误的。
有什么想法吗?代码如下。
jQuery(document).ready( function($) {
var WPHelpPointer = {$pointers};
$.each(WPHelpPointer.pointers, function(i) {
wp_help_pointer_open(i);
});
function wp_help_pointer_open(i) {
pointer = WPHelpPointer.pointers[i];
$( pointer.target ).pointer(
{
content: pointer.options.content,
pointer_id: pointer.options.pointer_id,
position:
{
edge: pointer.options.position.edge,
align: pointer.options.position.align,
nudgehorizontal: pointer.options.position.nudgehorizontal,
nudgevertical: pointer.options.position.nudgevertical
},
close: function() {
$.post(ajaxurl,
{
pointer: pointer.pointer_id,
action: 'dismiss-wp-pointer'
});
}
}).pointer('open');
console.log(pointer);
console.log(i);
}
});
答案 0 :(得分:2)
您可以尝试使用$.proxy
this
传递
close: $.proxy(function () {
$.post(ajaxurl, this);
}, {
pointer: pointer.pointer_id,
action: 'dismiss-wp-pointer'
})