jQuery hasClass不会通过子进程循环

时间:2017-03-11 16:25:49

标签: javascript jquery wordpress

我试图查找某些元素,如果它们在Wordpress Widget中包含某个类。但是,我无法理解为什么 exam student total_st 0 French a 1 1 English a 1 2 Italian a 1 3 Chinese b 1 4 Russian b 1 5 German b 1 6 German c 2 7 Spanish c 2 8 English c 2 9 French c 2 没问题,但cy.cxtmenu({ selector: 'node, edge', commands: [ { content: '<span class="glyphicon glyphicon-pencil"></span>', select: function(ele) { var $input = '<input type="text" value="'+ ele.data('name') +'" size="20" style="z-index: 10000;"/>'; $('div#cy').append($input); } }, { content: '<span class="glyphicon glyphicon-remove"></span>', select: function(ele){ } }, { content: '<span class="glyphicon glyphicon-trash"></span>', select: function(ele){ ele.remove(); } } ] });会抛出错误,说它不是函数!

HTML

authors.hasClass()

JS

currentAuthor.hasClass()

2 个答案:

答案 0 :(得分:5)

通过将对象作为数组循环,您可以将它们视为标准JavaScript对象。因为hasClass()是一个jQuery方法,所以它只能用在jQuery对象上。您可以使用jQuery的.each(),其中jQuery(this)指的是循环中的当前元素。

var authors = jQuery("li");

authors.each(function() {
    if (jQuery(this).hasClass("active")){
        //Do stuff
    }
});

话虽如此,为什么选择所有li元素然后检查它们是否具有活动类,何时只需选择所有活动元素?

var $active = jQuery("li.active");

$active.each(function() {
    //Do stuff
});

或者根据您正在做的事情,您甚至可能不需要each()

// Turn all active li elements red
var $active = jQuery("li.active");
$active.css("color", "red");

答案 1 :(得分:1)

Beacuse if ($ticket->status == 1) { echo 'Open'; } 不返回jQuery对象,而是返回原始DOM元素(因此它没有像authors[i]这样的jQuery方法)。 根据jQuery文档:

  

jQuery对象是围绕一个或多个DOM的类似数组的包装器   元素。获取对实际DOM元素的引用(而不是   jQuery对象),你有两个选择。第一个(也是最快的)   方法是使用数组表示法......

要解决您的问题,您必须将返回的元素包装在jQuery对象中,如下所示:

hasClass

或使用eq方法从集合中获取jQuery对象:

var currentAuthor = $(authors[i]);