javascript将var传递给匿名函数

时间:2013-12-31 08:50:17

标签: javascript jquery ajax

如果这是一个愚蠢的初学者问题,请道歉,但我被卡住了。

我有一些jquery代码从服务器获取一些HTML,然后我希望将其粘贴到提供的div中。 div被设置为数据目标。所以我使用$($(this).attr('data-target'))上下文来查找目标div。但是在.done()函数中,我不再在上下文中,我无法找到目标div。

$('.popout-button').click(function (event) {
    event.preventDefault();
    targetElem = $($(this).attr('data-target'));
    //request
    $.get("ajax.php", {
        action: "defInfo",
        class: "Cats22"
    })
        .done(function (data) {
            //Dump the data
            //This doesn't work. Can I pass targetElem somehow?
            targetElem.html(data);
        });
});

2 个答案:

答案 0 :(得分:1)

如果您在全局级别声明targetElem,即在函数外面然后初始化它,那么我认为它会起作用,即您可以从done函数内部访问它

var targetElem;
$('.popout-button').click(function(event) {
    event.preventDefault();

    targetElem = $($(this).attr('data-target'));

    //request
    $.get("ajax.php", {action: "defInfo", class: "Cats22"})
            .done(function(data) {
                //Dump the data

                //This doesn't work. Can I pass targetElem somehow?
                targetElem.html(data);

            });
});

答案 1 :(得分:0)

如果你想避免处理范围并从较低级别访问元素,你可以为你的元素添加一个id,或者,如果你不能(无论什么原因),你可以添加一个类名动态......像这样:

$($(this).attr('data-target')).addClass('target');

然后,只需在done()函数中再次选择它,如下所示:

var targetElem = $('.target');
targetElem.html(data);
相关问题