选择 $.ajax Jquery 的父级?
Posted
技术标签:
【中文标题】选择 $.ajax Jquery 的父级?【英文标题】:Select parent of $.ajax Jquery? 【发布时间】:2012-02-17 13:08:03 【问题描述】:如何选择 $.ajax 的父元素或触发 $.ajax 的元素的父元素。我需要某种参考,以便将结果数据应用到它:
var a = $a.val();
var b = $b.val();
$.ajax(
type: "POST",
url: "/Controller/Action",
data: a: a, b: b ,
success: function (data)
var values = data.values,
$elements = $();
for (i = 0; i < 142; i++)
$elements = $elements.add($("<div class='single'>").css('height', values[i]).css('margin-top', 26 - valuesG[i]));
//Here it should reference $(this).parent().parent().. something
//and not :last, because there are many .second elems...
//not only :last is being changed?
$elements.appendTo($(".second:last"));
$(".second:last").children(".single").addClass("ui-selected");
,
traditional: true
);
$(this).parent()
在ajax成功函数中返回jQuery()
有什么想法吗?
【问题讨论】:
【参考方案1】:使用上下文选项:
$.ajax(
url: "test.html",
context: document.body,
success: function()
$(this).addClass("done");
);
jQuery Reference
【讨论】:
上下文:这个,应该做!谢谢!【参考方案2】:因为默认情况下ajax
调用是asynch
,所以当您在success
中执行$(this)
时,this
引用ajax
api 等$(this).parent()
引用jQuery()
。
为了避免这种情况,在 ajax 调用开始在 success
中使用之前,将 element
reference
保存在 variable
中。
target_element = $(this);
$.ajax(
type: "POST",
url: "/Controller/Action",
data: a: a, b: b ,
success: function (data)
// ....................
target_element.parent()
...............................
【讨论】:
【参考方案3】:把ajax的调用放到一个函数中,并将一个元素参数传递给函数?
function doAjax(triggerElement)
$.ajax(
url: whatever,
context: triggerElement,
success : function (content) $(this).html(content);
);
$(function ()
$('#triggerElementId').click(function () doAjax(this); );
);
【讨论】:
以上是关于选择 $.ajax Jquery 的父级?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用JQuery在输入中选择其孩子在最后一个不为空的父级的上一个兄弟姐妹
[ jquery 过滤器 offsetParent() ] 此方法用于在选择器的基础之上搜索被选元素有定位的父级元素,仅对可见元素有效