jQuery .each()对象向ajaxurl发布了错误的值

时间:2014-05-24 14:25:35

标签: jquery ajax each

这是对来自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);
    }
});

1 个答案:

答案 0 :(得分:2)

您可以尝试使用$.proxy

将静态对象作为this传递
close: $.proxy(function () {
    $.post(ajaxurl, this);
}, {
    pointer: pointer.pointer_id,
    action: 'dismiss-wp-pointer'
})