【问题标题】:get a value with a jquery for loop使用 jquery for 循环获取值
【发布时间】:2013-09-22 05:06:32
【问题描述】:

我在一个数据库中有几个项目,我在 href 中显示一个链接,每个项目的 id。

所以我想从 PHP while 循环中的 href 获取 id。所以我做了一个for循环来做,但它似乎只得到第一个href attr。

for (var i = 0; i < check; i++) 
{
   var id = $(".id").attr('href');
   console.log(id);
} 

Check 等于数据库中的列数取决于一个特殊的 id。在这种情况下检查 = 3

链接是:echo '&lt;a id="dislike" class="btn-primary btn pull-right id" href="'.$items['id'].'"&gt;Dislike&lt;/a&gt;';

知道为什么它不起作用吗?

我都得到了!

但是我怎样才能让它们脱离这个功能呢?

function checkingfetchresult(userid){

    $.post("ajax/checkingfetchresult.php", { userid: userid },
            function(check){
            $(".id").each(function(){
                var id = $(this).attr('href');
            });

    });

}

【问题讨论】:

  • 不太确定你想在这里做什么。你能用更多的代码更新吗,你从代码中得到了什么,你期望得到什么?没有这些信息就很难提供帮助。
  • 我在链接href中有一个id,但这个id因链接而异(它来自数据库)。所以我试图得到这个 id,但因为我有几个 id,我试图得到它们,而不仅仅是第一个
  • 哦...所以$('.id') 选择该类的所有元素。您需要执行 $('.id').each(function(){... 循环遍历所有 id 类元素。

标签: javascript php jquery for-loop


【解决方案1】:

您在每次迭代中选择相同的元素,然后获取集合中第一个元素的属性。而不是这样循环,你应该使用each:

$(".id").each(function(){
   var id = $(this).attr('href');
   console.log(id);
});

【讨论】:

  • 顺便说一句:当我们清理这段代码时,在每个循环上创建一个新变量是个坏主意,您应该将var 语句移到each 上方这个解决方案。 +1,因为这是正确的,我认为,而且问题不是你的问题:)
  • @rockerest 这是个坏主意吗?如果我将它移到函数之外,它将不必要地暴露给外部范围。
  • 我假设外部范围需要访问 ID,因为只是 console.loging 它可能不是要使用的地方。这是一个坏主意,因为该变量将在每个循环中重新初始化,当$(".id") 的计数变大时会产生大量不必要的开销。
  • 它正在工作!如果我移动上面的 var 语句,我必须这样做: var id 并且我必须在函数中返回 id ?
  • @TheJailbreakBay 首先,您应该确定是否应该移动上面的 var 语句。作用域是 Javascript 的一个非常重要的部分。如果您决定将其移至上方,则内部匿名函数将已经可以访问它。您还必须记住,您的函数每次都会返回 id,因此如果您想访问每一个,您需要将 ID 设为一个数组并推送给它,而不是简单地分配值。我现在将不理会 Paulpro 的答案,但祝你好运!
【解决方案2】:

您每次都会获得第一个元素,并记录其href。如果循环每次都做同样的事情,你就不能期望它的行为会有所不同吗?

如果要获取所有.id 元素的所有href 属性,请使用map

$('.id').map(function () { return $(this).attr("href") });

它将返回一个数组,其中每个元素是对应的.id 元素的href

【讨论】:

  • 有了这个,我在控制台中得到了:Object["59", "59", "57", "57", "56", "56"]。为什么?
  • 因为它返回的是一个数组,其中每个元素都是对应元素的href
  • paulpro 的方法对我来说似乎更好,但我不能让 ids 离开功能!
【解决方案3】:

$(".id") 返回一个类似数组的对象,包含所有匹配的元素。你真正想做的是:

var idArray = $(".id");
for (var i = 0; i < check; i++) {
    var id = $(idArray[i]).attr('href');
    console.log(id);
} 

【讨论】:

    猜你喜欢
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多