例如,我有一个类似于以下内容的HTML代码:
<ul id="li1">
<li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
<li>e</li>
<li class="class1">f</li>
<li>g</li>
</ul>
我想遍历每个<li>
元素并检查它是否有特定的类&#34; class1
&#34;。我正在寻找看起来像(python等效)的东西:
for i in $("#li1").children():
print i.hasClass("class1")
我无法找到一种方法来评估javascript或jquery中的每个子<li>
元素。有人可以帮忙吗?
答案 0 :(得分:4)
您无法直接在<li>
下嵌套<li>
。这将是一个无效的加价。虽然,你可能会有这样的事情:
<ul id="li1">
<li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
<li>e</li>
<li class="class1">f</li>
<li>g</li>
</ul>
因此,对于上面的代码,要获得相同的输出,请使用以下方式:
$("#li1 li").each(function () {
console.log($(this).hasClass("class1"));
});
这将打印:
false
false
false
false
false
true
false
答案 1 :(得分:1)
它建立在Praveen所提供的基础之上,你也可以使用以下仅仅循环那些具有类的li标签
$("#li1 li.class1").each(function () {
console.log($(this).hasClass("class1"));
});
&#13;
干杯
答案 2 :(得分:1)
这看起来像你在询问如何循环 JavaScript
以下是一种使用while
的方法,该方法使用 falsy 值停留在索引处(即undefined
)
var i, // set up variables,
i_idx = 0, // initial index
list = $("#li1").children(); // and interesting object
while (i = list[i++]) {
console.log($(i).hasClass("class1"));
}
这是一种使用for
的方法,通过在for
var list = $("#li1").children(); // interesting object
for (var i_idx = 0, i; i = list[i_idx], i_idx < list.length; ++i_idx) {
console.log($(i).hasClass("class1"));
}
此处使用索引i
设置i = list[i_idx]
,然后通过使用<在单个表达式中针对 length i_idx < list.length
测试索引em>逗号运算符
请注意
$(...)
中以便用于< em> jQuery 再次。while
和for
等不提供var
范围,变量 i
,i_idx
,list
由其父功能(或全局范围)确定范围list
或while
的条件下生成for
将导致每次迭代重新生成var
。这通常是不希望的,这就是事先提前.forEach
的原因。.map
,for (let i of $("#li1").children()) {
console.log($(i).hasClass("class1"));
}
等)的本机方法, jQuery 也提供了迭代方法,但你可能是如果您不知道这些来自哪里(例如 Array-like ,例如 NodeList 并不总是提供这样的方法),则意外地被发现了。如果您在 EMCAScript 6 支持的环境中工作,则可以使用for..of
,其行为与 python 示例中的行为相同,
// add rest.li's gradle plugins so they can be used throughout project
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
classpath 'com.linkedin.pegasus:gradle-plugins:1.15.9'
}
}
task wrapper(type: Wrapper) {
gradleVersion = '1.12'
}
final pegasusVersion = '1.15.9'
ext.spec = [
'product' : [
'pegasus' : [
'data' : 'com.linkedin.pegasus:data:' + pegasusVersion,
'generator' : 'com.linkedin.pegasus:generator:' + pegasusVersion,
'restliCommon' : 'com.linkedin.pegasus:restli-common:' + pegasusVersion,
'restliClient' : 'com.linkedin.pegasus:restli-client:' + pegasusVersion,
'restliServer' : 'com.linkedin.pegasus:restli-server:' + pegasusVersion,
'restliTools' : 'com.linkedin.pegasus:restli-tools:' + pegasusVersion,
'gradlePlugins' : 'com.linkedin.pegasus:gradle-plugins:' + pegasusVersion,
'restliNettyStandalone' : 'com.linkedin.pegasus:restli-netty-standalone:' + pegasusVersion,
'restliServerStandalone' : 'com.linkedin.pegasus:restli-server-standalone:' + pegasusVersion
]
]
]
allprojects {
apply plugin: 'idea'
apply plugin: 'eclipse'
}
subprojects {
apply plugin: 'maven'
afterEvaluate {
if (project.plugins.hasPlugin('java')) {
sourceCompatibility = JavaVersion.VERSION_1_6
}
// add the standard pegasus dependencies wherever the plugin is used
if (project.plugins.hasPlugin('pegasus')) {
dependencies {
dataTemplateCompile spec.product.pegasus.data
restClientCompile spec.product.pegasus.restliClient
// needed for Gradle 1.9+
restClientCompile spec.product.pegasus.restliCommon
}
}
}
repositories {
mavenLocal()
mavenCentral()
}
}