【发布时间】:2009-12-23 02:17:32
【问题描述】:
我做了一个 each 语句,它遍历找到的每个类项。同时,还有另一个具有不同类别但具有相同密钥的项目。我需要从第一个中获取密钥并将其放入第二个项目中,而无需第二次循环。
$('.searchby').each(function(k,v){ // looping through .searchby
$(v).live('change',function(){ // when .searchby drop down changed do this
selv = $(this).val(); // get value of drop down
$.post('file.php',{ 'val' : selv },function(data){
// Below is where I need what I need to happen.
// Previously I had .searchby as id but need multiple.
// So, what I need it to do is like php.
// $('.searchfield[k]).html(data); // <-- like this
$('#searchfield').html(data);
},'html'); // html, xml, script, json
});
});
--编辑--
首先,$(v).live 中的 v 应该是 $(this).live 第二,我想将单/id 拉脚本转换为多拉脚本。所以,我写了这个行得通。
$('.searchby').each(function(k,v){
$(this).change(function(){
selv = $(this).val();
$.post('file.php',{
'val' : selv
},function(data){
$('.searchfield').each(function(kk,vv){
if(k == kk) $(vv).html(data);
});
//$('#searchfield').html(data);
},'html'); // html, xml, script, json
});
});
但我希望能够将内部的 .each 取出并替换为:
$('.searchfield:eq('+k+')') <-- something like this if I can get it to work
所以解决办法是这样的:
$('.searchby').each(function(k,v){
$(this).change(function(){
selv = $(this).val();
$.post('file.php',{
'val' : selv
},function(data){
$('.searchfield:eq('+k+')').html(data);
},'html'); // html, xml, script, json
});
});
谢谢大家
【问题讨论】:
-
只是看...我认为或将本地(例如
var tempk = k;)添加到传递给它的函数然后仅在第二个嵌套函数中引用它应该与JavaScript的范围规则一起使用。 -
话虽这么说(抱歉重复发帖,忘记完成思考),您仍然需要“生成”标识符:
$('#searchfield['+k+']').html(data);或类似名称。 -
k已经是本地的了,因为它是一个函数参数。 -
“live”不是更适合 CSS 字符串而不是 jQuery 选择集吗?否则有什么意义? $(v) 中不会出现任何新内容。