我需要在列表和列表项中找到具有特定ID的<a>
,其中href等于变量<li>
(然后向其添加特定类)。
<ul id="elementSelectionList">
<li><a href="#bzm_tagline" class="text">Tagline</a></li>
</ul>
<input id="form_tagline" name="tagline" value="">
$('#fields input').each(function (){
var elementListing = this.id.replace('form', 'bzm');
if( !$(this).val() ) {
$('#elementSelectionList li a[href*="#' + elementListing + '"]')
.hasClass('text')
.removeClass('filled')
.addClass('empty');
}
});
我收到错误:object false没有方法'removeClass'。 想知道如何实现我想要做的事情......
答案 0 :(得分:2)
您的JS略有不正确。这看起来更好:
$('#fields input').each(function (){
var elementListing = this.id.replace('form', 'bzm');
var element = $('#elementSelectionList li a[href="#' + elementListing + '"]');
if( !$(this).val() && element.hasClass('text') ) {
element
.removeClass('filled')
.addClass('empty');
}
});
hasClass
自然会返回boolean
,而不是jQuery object
答案 1 :(得分:1)
我认为elementSelectionList选择应该是:
$('#elementSelectionList li a[href*="#' + elementListing + '"]')
E.g。它应该以'#'开头。此外,如果您在#fields
标记中包含javascript,请确保在<script>
div / form(?)之后定义了javascript。
答案 2 :(得分:1)
.hasClass
method返回一个布尔值,因此无法用于链接。
由于您在上使用 .removeClass('filled').addClass('empty')
类的元素.text
,您似乎只是将其添加到选择器中:
$('#fields input').each(function (){
var elementListing = this.id.replace('form', 'bzm');
if( !$(this).val() ) {
$('#elementSelectionList li a.text[href*="#' + elementListing + '"]') // Added .text here!
.removeClass('filled')
.addClass('empty');
}
});