我似乎试图通过附加的参数回到我为一个成功的ajax调用创建的成功回调方法。一点背景我有一个页面与一些动态创建的文本框/选择框对。每个对具有动态分配的唯一名称,例如name =“unique-pair-1_txt-url”和name =“unique-pair-1_selectBox”,则第二对具有相同但前缀不同。
为了重用代码,我已经制作了回调来获取数据并引用了选择框。但是当回调被触发时,对selectBox的引用返回为’undefined’。我读了here它应该是可行的。我甚至尝试利用“上下文”选项,但仍然没有。这是我试图使用的脚本块:
<script type="text/javascript" language="javascript">
$j = jQuery.noConflict();
function getimages(urlValue,selectBox) {
$j.ajax({
type: "GET",url: $j(urlValue).val(),dataType: "jsonp",context: selectBox,success:function(data){
loadImagesInSelect(data)
},error:function (xhr,ajaxOptions,thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
}
function loadImagesInSelect(data) {
var select = $j(this);
select.empty();
$j(data).each(function() {
var theValue = $j(this)[0]["@value"];
var theId = $j(this)[0]["@name"];
select.append("<option value='" + theId + "'>" + theValue + "</option>");
});
select.children(":first").attr("selected",true);
}
</script>
从我所看到的,我觉得我很亲近,但我只是不能把我的手指放在缺少的链接上。请帮助你典型的忍者秘密的方式。 TIA
**** ****更新
尼克是一个真正的忍者。他们应该发明一个新的徽章!他下面的答案是诀窍。正如他所说,它是1.4具体的,但我可以生活在这一点上。这是我的最后的代码,正在为任何Ninjas在培训(和我的未来参考)工作:
<script type="text/javascript" language="javascript">
$j = jQuery.noConflict();
function getimages(urlValue,url: urlValue+ '?callback=?',success: jQuery.proxy(function (data) {
var select = $j(this);
select.empty();
$j(data).each(function() {
var theValue = $j(this)[0]["@value"];
var theId = $j(this)[0]["@name"];
select.append("<option value='" + theId + "'>" + theValue + "</option>");
});
select.children(":first").attr("selected",true);
},selectBox),thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
}
</script>
解决方法
更新:如果您使用jQuery 1.4,请稍等一下简化:
success: jQuery.proxy(function (data) {
var select = $j(this);
select.empty();
$j(data).each(function() {
var theValue = $j(this)[0]["@value"];
var theId = $j(this)[0]["@name"];
select.append("<option value='" + theId + "'>" + theValue + "</option>");
});
select.children(":first").attr("selected",true);
},selectBox)