如果问过这个问题,请原谅重复。
我无法让我的代码检查ul类变量中每个可能的类选项的每个列表ID。
HTML:
<div class="category-filters-wrap">
<ul class="ULClasses"> /* dynamic options that may contain multiple class options */
<li id="Benefits">Item</li> /* Hard coded IDs */
<li id="Resources">Item</li>
<li id="Timecards">Item</li>
</ul>
</div>
jQuery:
$('.category-filters-wrap').each(function() {
$(this).find('li').each(function() {
liID = $(this).attr('id'); /* Get ID from this list item */
ULClass = $(this)closest('ul').attr('class'); /* Get Classes from closest UL to this list item */
/* if the list ID matches ANY of the classes in the UL */
if ($ (liID).hasClass(ULClass) ) {
/* ... do stuff */
}
});
});
我尝试过这样的事情:
/* starting from if */
if (liID[1].match("(' + ULClass + ')") {
/* ... do stuff */
}
和
/* starting from if */
if ($(liID).is(":contains('" + ULClass + "')")) {
/* ... do stuff */
}
但我想我现在只是把厨房的水槽扔到它上面。 在此先感谢您的帮助。我对jQuery相对较新(如果我犯了一些严重的noobie错误,请原谅)。如果你对我做错了什么有任何想法,你可以提供的更多细节来帮助我理解这一点,就越好!
格拉西亚斯!
答案 0 :(得分:0)
您可以创建一个迭代类名并返回找到的类名的函数:
var searchClassName = function(string) {
var arrayClasses = string.split(" ");
for(var i = 0; i < arrayClasses.length; i++) {
if($('#'+arrayClasses[i]).length > 0) {
// the id with the className XXX was found!
return arrayClasses[i];
}
}
return false;
}
searchClassName("string of classnames space separated");
// returns false if doesn't found
// returns the name of the classname found with id
var searchClassName = function(string) {
var arrayClasses = string.split(" ");
for(var i = 0; i < arrayClasses.length; i++) {
if($('#'+arrayClasses[i]).length > 0) {
// the id with the className XXX was found!
return arrayClasses[i];
}
}
return false;
}
alert(searchClassName("Benefits Resources Timecards"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="category-filters-wrap">
<ul class="Benefits AnotherClassname">
<li id="Benefits">Item</li>
<li id="Resources">Item</li>
<li id="Timecards">Item</li>
</ul>
</div>
答案 1 :(得分:0)
你当前的jquery使用find和最接近的“重”。
为什么不让自己的生活更轻松,并为每个li标签分配一个类(例如,称为“myclass”),然后对它们执行检查?当然,数据不长,你的DOM页面很短,然后性能不是问题 - 但就良好的做法而言,我会重新考虑你的寻求并找到思考过程。下面的示例将在您的页面中搜索所有具有类“myclass”的li标签 - 当它找到一个时,它会检查li标签是否具有“anotherclass”类,如果是,它会执行以下操作...... < / p>
$('li.myclass').each(function() {
/* if the list ID matches ANY of the classes in the UL */
if ($(this).hasClass("anotherclass") ) {
/* ... do stuff */
}
});
});
或者下面的一个班轮将找到所有同时包含myclass和anotherclass的li标签然后做东西......
$('li.myclass.anotherclass').each(function() { /* do stuff */ });
我希望这个建议不会冒犯......