【问题标题】:jquery each css arrayjquery每个css数组
【发布时间】: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) 中不会出现任何新内容。

标签: jquery css ajax


【解决方案1】:

我怀疑您上面的$(v) 不正确,因为$(...).each() 为其回调提供了一个记录在案的参数(索引)。

要实现$('.searchfield[k]') 的等效项,实际上有一个非常接近的语法可用:

$('.searchfield:eq('+k+')')

【讨论】:

  • 我将这段代码放入我的代码中,并在顶帖中给出了最终版本。
【解决方案2】:

问题不清楚。你说的是类,但你的代码使用$('#searchfield'),它用于选择具有给定 ID 的元素。

假设您真的想要选择具有给定类的元素(这更正确,因为不应该存在具有重复 ID 的元素),并且对于 @987654323 选择的每个元素,如果只有一个类 searchfield 的元素@,那么你可以使用$($('.searchfield')[k]).html(data)

【讨论】:

  • 如果我没记错的话,$(...)[k] 返回的是 DOM 元素,而不是 jQuery 对象,所以你必须改写 $($(...)[k]).html()
猜你喜欢
  • 2012-01-07
  • 2017-03-29
  • 2011-11-19
  • 2014-02-01
  • 2019-03-13
  • 1970-01-01
  • 2016-10-24
  • 2018-11-21
  • 2023-04-04
相关资源
最近更新 更多