jQuery hasClass返回true但removeClass不起作用?

时间:2012-11-27 15:53:40

标签: javascript jquery

这已得到修复。编程很糟糕。我两次调用该函数。所以它正在删除类,但是当函数第二次运行时它正在读取类。抱歉我的编程很差,谢谢大家的帮助。我喜欢stackoverflow因为所有乐于助人的人!

好吧,所以我一直试图找出一些东西,但它可能是我的感冒阻止我解决它。我正在做的是当用户选择添加类的东西时。但是,如果他们再次选择它,我想删除该课程。所以我检查了元素hasClass是否返回true但是当我执行removeClass时它什么也没做...

修改JS看起来像这样。为了表明我可以看到Selectedindex和索引匹配,并且出于某种原因正在跳过/忽略“option-select”的removeClass。我可以改变它来说removeClass(“选项”),它工作正常,但我不能removeClass(“选项选择”)

$(obj.find('.option')).each(function(Selectedindex) {
    if ($(this).hasClass('option-selected') && Selectedindex == index) {
        $(this).removeClass('option-selected');
        console.log(Selectedindex+" == "+index);
    }
});

在选择元素时将index传递给函数。

这里有一些HTML

<div id="MultipleSelect-HTML" class="dropdown container" multiple="multiple" style="width: 100%;">
    <ul class="options" style="width: 100%; display: block; position: relative;">
        <li>
            <a class="option option-selected"> 
                <input class="option-value" type="hidden" value="0"> 
                <img class="option-image" src="http://cdn1.iconfinder.com/data/icons/inside/PNG/032x032/icontexto-inside-facebook.png"> 
                <label class="option-text" style="cursor:pointer;">Facebook</label> 
                <small class="option-description desc">Check out my Facebook page!</small>
            </a>
        </li>
        <li>
            <a class="option option-selected"> 
                <input class="option-value" type="hidden" value="1"> 
                <img class="option-image" src="http://cdn1.iconfinder.com/data/icons/inside/PNG/032x032/icontexto-inside-twitter.png"> 
                <label class="option-text" style="cursor:pointer;">Twitter</label> 
                <small class="option-description desc">Check out my Twitter page!</small>
            </a>
        </li>
        <li>
            <a class="option"> 
                <input class="option-value" type="hidden" value="2"> 
                <img class="option-image" src="http://cdn1.iconfinder.com/data/icons/inside/PNG/032x032/icontexto-inside-linkedin.png"> 
                <label class="option-text" style="cursor:pointer;">LinkedIn</label> 
                <small class="option-description desc">Check out my LinkedIn page!</small>
            </a>
        </li>
        <li>
            <a class="option"> <input class="option-value" type="hidden" value="3"> 
                <img class="option-image" src="http://cdn1.iconfinder.com/data/icons/inside/PNG/032x032/icontexto-inside-flickr.png"> 
                <label class="option-text" style="cursor:pointer;">Flickr</label> 
                <small class="option-description desc">I don't have a flicker Page :(</small>
            </a>
        </li>
    </ul>
</div>

请注意,所有这些信息都是使用javascript动态生成的

感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:2)

您正在为option-selected执行hasClass但尝试removeClass dd-option-selected

假设它是dd-option-selected,改变如下,

$(obj.find('.option')).each(function(Selectedindex) {
    if ($(this).hasClass('dd-option-selected') && Selectedindex == index)
        $(this).removeClass('dd-option-selected');
});
  

是的,明确表示谢谢......但它仍然不起作用。还有其他想法吗? - Robert E. McIntosh

     

如果这有选择dd-option并且没有删除该类,那么Selectedindex不等于index - Vega

答案 1 :(得分:1)

您正在hasClass option-selectedremoving dd-option-selectedyou should check dd-option-selected进行核对。

你的条件是。

if ($(this).hasClass('dd-option-selected') && Selectedindex == index)
        $(this).removeClass('dd-option-selected');

如果您不确定类名和类名无关紧要,可以使用removeAttr删除类

$(this).removeAttr('class');