jquery toggleClass() - 访问选定的元素

标签 jquery

我想要toggle a class基于某些条件我必须根据已处理元素的 ID 计算:

$(".centre li").toggleClass("highlight", someFunction(x));

(这将选择大约 10 个列表元素。我需要每个元素的 ID 来查找是否需要突出显示。)

someFunction(selectedElement) {
  if (selectedElement.id in someArray)
    return true
  else
    return false
}

我可能在闭包 hell 中迷失了方向,但是函数中的this被设置为另一个元素。这是真正的代码:

...
showListItem = function(linkSelector, listSelectors, contentSelector) {
return function() {
    $(".centre li").toggleClass("backgroundFullOrange", test(this));
    function test(a) {
        console.log($(a).attr("id")); // -> id of the linkSelector-element
    }
}
};  
$(linkSelector).bind('click', showListItem(linkSelector, listSelectors, contentSelector))
...

更新:事实证明,toggleClass() 不是我一直在寻找的函数。请参阅已接受的答案以了解正确的用法。

最佳答案

首先,$(".centre li").toggleClass("highlight", someFunction(x)); 不是正确的语法。第二个参数是 switch ,定义如下,

switchA boolean value to determine whether the class should be added or removed.

switch 不能是您拥有的函数。

在您的情况下,您必须调用 .removeClass('highlight') ,然后调用 addClass ,您可以在其中比较元素的 ID 并返回突出显示或''。

参见演示,每 1.5 秒随机突出显示 2 里。

DEMO

    $(".centre li")
       .removeClass('highlight')
       .addClass(function () {
           return ($.inArray(this.id, someArray) >= 0)?'highlight': '';
       });

我想这次我理解正确了。见下文,

DEMO

$(function() {
    var someArray = ['l1', 'l8'];

    $(".centre li").toggleClass(function() {
        return ($.inArray(this.id, someArray) >= 0)?'highlight':'';
    });

});

尝试使用.filter。像下面这样,

$(".centre li").filter(function() {
    return $.inArray(this.id, someArray);
}).toggleClass("highlight");

突出显示只会添加到过滤器返回的那些元素。

关于jquery toggleClass() - 访问选定的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10047339/

相关文章:

javascript - jQuery 和 Node.js 有什么区别?

javascript - 统计一篇文章有​​多少节

javascript - 图像上的缩略图可通过 slider 更改更大的图片

javascript - Scrollmagic - 使用多个补间更改主体和 div 背景颜色

javascript - 如何使用 JS 或 HTML 以编程方式清除浏览器缓存

c# - 更新输入类型=文本值或文本框控件调整大小事件

Javascript 全屏在 JSFiddle 中不起作用

javascript - 扩展存储在变量中的函数

jquery - Silverlight 还是 jQuery?选择面向 future 的技术

javascript - Bootstrap 调整大小和自动折叠