- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
jQuery的toggle()支持多种状态,并且它会循环你给它的多个状态
来自documentation :
If more than two handlers are provided, .toggle() will cycle among all of them. For example, if there are three handlers, then the first handler will be called on the first click, the fourth click, the seventh click, and so on.
以下代码效果很好,循环遍历所有三种状态。
$('#tag').toggle(function() {
//set cssClass to 'on'
//remove all other classes
}, function() {
//set cssClass to 'off'
//remove all other classes
}, function() {
//set cssClass to 'none'
//remove all other classes
});
我的问题是,在初始页面加载时,该类由后端设置在 #tag 上,但是当单击标签时,toggle() 会从第一个切换状态“on”开始循环,无论初始状态如何状态。
我想我正在寻找的是一个智能切换,它根据传入的当前状态的选项进入下一个状态。
我可能会添加四个状态,因此我不需要复杂的 if else 语句。
n.b 类的设置和删除只是一个示例。我正在做其他事情。请不要给出添加和删除类的示例 - 尽管您可以检查类以查找初始状态。
最佳答案
在我看来,您需要对 jQuery 进行修改,这确实不礼貌,但确实有效。
我查看了 jQuery 源代码,这就是它的基本作用:
guid
的属性jQuery._data(element, 'lastToggle'+guid, index) 中调用的最后一个函数的索引
lastToggle
值和函数数组切换函数因此,为了更改切换索引,您所需要做的就是从第一个函数中读取 guid
并使用元素上的 jQuery._data 设置所需的值。
我在这里给你举了一个简单的例子: http://jsfiddle.net/2gJdG/
要点如下:
var fn1 = function (){
console.log(1);
};
$('button').toggle(fn1, function (){
console.log(2);
}, function(){
console.log(3);
}, function(){
console.log(4);
});
jQuery._data($('button').get(0), 'lastToggle' + fn1.guid, 2);
正如您所见,单击按钮它将调用第三个函数,依此类推。您需要在变量中至少定义第一个函数,以便稍后访问它的属性。
记住,这只是一个 hack,有一天可能会因为升级你的 jQuery 而被破坏。
关于jquery切换3状态与初始状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13375178/
我很好奇如何从服务器管理初始状态。例如,我们在页面上有一个按钮,只有在用户获得授权后才能启用该按钮。我看到两个选项,但都有缺点: 在 ComponentWillMount() 中,从服务器获取信息。缺
我有一个听另一个集团的集团。更新后flutter_bloc打包至 version 6.0.2 ,监听器在初始状态下不会再调用。 class BlocA extends Bloc { final B
我正在为我的 React 应用程序使用 redux。我正在从 api 获取用户数据,用它更新 redux 状态并将其显示到我的组件中。数据是对象列表。导致我出现问题的是设置 redux 初始状态。 r
我想观察一个由完全独立的代码修改的 ObservableList。我的问题是,我不仅希望在列表更改时调用 ListChangeListener(当我附加监听器时,列表可能已经包含元素),而且我还希望将
正如标题所说,我需要将 TextView、ImageView 和其他 View 重置为初始状态。例如,在触摸该特定 View 后,会播放一个动画,并且它的动画会(视觉上)销毁该 View 。 现在我需
我已经开始开发一个 react native 应用程序,但我的 ListView 的初始化出现问题。 我正在使用react-native-db-models插件来存储和检索我的数据 问题是我想在rea
我正在对时间序列数据使用 lstm。我有关于时间序列的不依赖于时间的特征。想象一下该系列的公司股票以及非时间系列功能中的公司位置之类的东西。这不是用例,但它是相同的想法。对于此示例,我们只预测时间序列
我有一个参与者模型,带有 state_machine last_action。我想根据角色属性设置last_action 的初始值。如果角色为“导师”,则初始值为“值1”,而如果角色为“学生”,则初始
我已经为 LavaLamp 滑动菜单集成了代码,到目前为止效果很好(我遇到了一些问题,但能够通过阅读面板快速解决它们)但是有一件令人沮丧的事情妨碍了我。当您最初加载页面时,菜单悬停背景位于错误的位置,
我想根据从 Home.js 获得的现有 Prop 在 reducer.js 中设置初始状态 我试图调用 home: this.props.homedata 来设置初始状态,但它不起作用。 import
在我的程序中,我有多个网格,但它们非常相似,因此我决定为所有网格制作一个 reducer ,以保持我的代码美观且干燥。当我分派(dispatch)事件以更改存储时,我将网格名称作为参数与有效负载一起发
我是 React 的新手,正在尝试构建一个具有购物车功能的应用程序,用户可以在其中将机器人添加到购物车。我正在使用 Context API 在整个应用程序中提供购物车,并使用 useReducer 为
我是 React 的新手,正在尝试构建一个具有购物车功能的应用程序,用户可以在其中将机器人添加到购物车。我正在使用 Context API 在整个应用程序中提供购物车,并使用 useReducer 为
我有一个功能: test :: String -> State String String test x = get >>= \test -> let test' = x ++ tes
我是 Redux 和 React 的新手,我正在尝试编写一些基本代码。我遇到了一个看起来很愚蠢但无法解决的问题。 这是片段 import React from 'react'; import Reac
我是 JS/React-native 新手,对于如何正确管理 map 初始状态有点困惑。 我有以下组件: import React from 'react'; import { StyleSheet,
嗨,我最近开始使用 Angular 和 Node,但立即遇到了问题。 我有一个简单的 Controller ,用于获取单个对象。一切正常,但我希望能够在 Controller 内初始化范围变量。我不知
我正在使用tf.nn.dynamic_rnn在 tensorflow 中运行 LSTM。我有一个由 N 个初始状态向量组成的张量和一个由 M = N * n 个输入组成的张量。每个系列由n个输入项组成
在 Angular 1.5 应用程序中使用 UIRouter,我在尝试为我的 Angular 模块设置初始状态时遇到问题。 我已经创建了几个没有 URL 的状态(因为我不需要实际路由),我想在模块实例
我是一名优秀的程序员,十分优秀!