0

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

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

将 JS 修改为如下所示。为了表明我可以看到 Selectedindex 和 index 确实匹配,并且由于某种原因,“option-select”的 removeClass 被跳过/忽略。我可以将其更改为 removeClass("option") 并且它工作得很好但我不能 removeClass("option-selected")

$(obj.find('.option')).each(function(Selectedindex) {
    if ($(this).hasClass('option-selected') && Selectedindex == index) {
        $(this).removeClass('option-selected');
        console.log(Selectedindex+" == "+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 动态生成的

感谢您提供的任何帮助。

4

2 回答 2

2

你正在做 hasClass foroption-selected但试图removeClassdd-option-selected

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

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

是的,解决了,谢谢......但它仍然无法正常工作。还有其他想法吗?——罗伯特·E·麦金托什

如果这有 dd-option-selected 并且它没有删除类,则 Selectedindex 不等于 index – Vega

于 2012-11-27T15:54:53.080 回答
1

您正在检查hasClass option-selected但是removing dd-option-selected, you should check dd-option-selected

你的条件是。

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

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

$(this).removeAttr('class');
于 2012-11-27T15:54:58.497 回答