如果这是一个愚蠢的初学者问题,请道歉,但我被卡住了。
我有一些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);
});
});
答案 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);