循环使用类似类的元素

时间:2015-08-04 17:08:30

标签: javascript jquery angularjs loops

如何遍历特定div标签中的一组元素?此方法在Angular.js代码的工厂中定义。

<div id="idName">

  <span class="className">Monday</span>
  <span class="className">Tuesday </span>

</div>

Javascript:

 var currentTime = new Date();
        var today = currentTime.getDay(); //0-7
        var d = new Date();
        var weekday = new Array(7);
        weekday[0]=  "Sunday";
        weekday[1] = "Monday";
        weekday[2] = "Tuesday";

$('#idName .className').each(function(index, item) {
    if(item.text) //This part never runs
        {   
            if(item.text.indexOf(weekday[today])!=-1) { 
                item.addClass('currentDay'));
            }
            else {
                item.removeClass('currentDay');
            }
        }

        });

5 个答案:

答案 0 :(得分:1)

使用来自weekday []的indexOf,而不是文本项(您想知道日期是否在数组中)。并且在包含星期二的跨度之后你有一个额外的空间(因此它不会被indexOf找到)。试试这个:

<div id="idName">

<span class="className">Monday</span>
<span class="className">Tuesday</span>
</div>

然后按如下方式更新代码(本节中没有变化):

var currentTime = new Date();
var today = currentTime.getDay(); //0-7
var d = new Date();
var weekday = new Array(7);
weekday[0]=  "Sunday";
weekday[1] = "Monday";
weekday[2] = "Tuesday";

addClass / removeClass也不是item(一个dom元素)的函数,而是每个循环中$(item)的函数。

$('#idName .className').each(function(index, item) {
    if(item.textContent) //This part never runs
    {
        if(weekday.indexOf(item.textContent) == today) {
            $(item).addClass('currentDay');
        }
        else {
            $(item).removeClass('currentDay');
        }
    }

});

答案 1 :(得分:0)

$result = mysqli_query($db,"SELECT email from users WHERE email = '$email'");是方法,而不是属性。使用text代替.text()。迭代中的上下文.text也指每次迭代中的相应元素。你可以用它来创建它的jquery对象。您也可以使用布尔条件this根据条件添加/删除类:

toggleClass

答案 2 :(得分:0)

循环部分很好,问题是元素没有text属性。您可能打算使用$(item).text()。另请注意,item只是一个DOM元素,而不是jQuery对象。获取该元素的惯用方法是this,而不是item(除非您必须使用this进行其他操作):

$('#idName .className').each(function(index) {
    var item = $(this),
        text = item.text();
    if (text) {
        if (text.indexOf(weekday[today]) != -1) {
            item.addClass('currentDay');
        } else {
            item.removeClass('currentDay');
        }
    }
});

)行还有一个额外的item.addClass('currentDay');

答案 3 :(得分:0)

$("#idName .className")已经是元素的集合,您可以直接进入.text()

$('#idName .className').text(function(i,v) {
  $(this).toggleClass("currentDay", $.trim(v)===weekday[today]);
});

<强> jsBin demo

P.S:

  • 您的代码中有额外的);。使用开发人员工具,控制台检查错误。
  • currentTime.getDay()无法为您提供 0-7 ,但0-6因为星期日为0星期六为{{ 1}}
  • 在使用方法之前阅读jQuery文档。
  • 6数组可以定义为weekday
  • 使用var weekday = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];删除不需要的包装空格

答案 4 :(得分:-1)

我会在你的if语句中检查item.innerHTML而不是item.text