Javascript History.js从列表项中删除活动类
这就是我要做的。假设在我的AJAX应用程序中,我单击了一个链接,该链接添加了一个名为active的类,这个单击还会触发History.js上的statechangeJavascript History.js从列表项中删除活动类,javascript,history.js,Javascript,History.js,这就是我要做的。假设在我的AJAX应用程序中,我单击了一个链接,该链接添加了一个名为active的类,这个单击还会触发History.js上的statechange 我需要帮助了解的是如何用我的当前状态保存当前活动链接,因此当我单击“后退”或“前进”按钮时,它会根据特定URL的状态从链接中删除或添加活动类。我再次查看了该问题,并认为找到了更好的方法。在将活动类添加到单击事件的列表项之前 $(".products ul li a").on("click", function(e) { $th
我需要帮助了解的是如何用我的当前状态保存当前活动链接,因此当我单击“后退”或“前进”按钮时,它会根据特定URL的状态从链接中删除或添加活动类。我再次查看了该问题,并认为找到了更好的方法。在将活动类添加到单击事件的列表项之前
$(".products ul li a").on("click", function(e) {
$this.closest("li").toggleClass("active");
}
但是现在我认为一个更好的方法是在History statechange事件发生时将活动类添加到我的列表项中。这将允许我首先检索GET url参数,然后根据这些值查找数据值属性与url值匹配的列表项
下面是我认为找到正确匹配元素所需的步骤的分解
History.Adapter.bind(window,'statechange',function(e){
activate_items();
}
// GET PARAMETER
function get_parameter( name ){
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var state = History.getState();
var current_url = state.cleanUrl;
var results = regex.exec( current_url );
if( results == null )
return "";
else {
return results[1];
}
}
// ACTIVATE ITEMS
function activate_items( url ){
var items;
// Categories
var cats = get_parameter("product_cats");
var colors = get_parameter("color");
if (cats.length > 0) {
items = jQuery(".product ul li a");
// Check each <li> for a match. If its data-value attribute matches
// one of the values from cats than add an active class to the <li>
};
if (colors.length > 0) {
items = jQuery(".product ul li a");
// Check each <li> for a match. If its data-value attribute matches
// one of the values from colors than add an active class to the <li>
};
}
History.Adapter.bind(窗口,'statechange',函数(e){
激活_项();
}
//获取参数
函数get_参数(名称){
名称=名称。替换(/[\[]/,“\\\[”)。替换(/[\]]/,“\\\]”);
var regexS=“[\\?&]”+name+“=([^&\\]*)”;
var regex=新的RegExp(regexS);
var state=History.getState();
var current_url=state.cleanUrl;
var results=regex.exec(当前url);
如果(结果==null)
返回“”;
否则{
返回结果[1];
}
}
//激活项目
函数激活\u项(url){
风险值项目;
//类别
var cats=获取参数(“产品”cats);
var colors=get_参数(“颜色”);
如果(猫的长度>0){
项目=jQuery(“产品ul li a”);
//检查每个是否匹配。如果其数据值属性匹配
//cats中的一个值,然后将活动类添加到
};
如果(colors.length>0){
项目=jQuery(“产品ul li a”);
//检查每个 是否匹配。如果其数据值属性匹配
//“颜色”中的一个值,然后将活动类添加到
};
}
您可以在代码中看到,我还没有弄清楚如何进行匹配
重申一下,我正在做所有这一切,因此当你点击浏览器上的后退、前进或刷新按钮时,列表项将根据URL参数具有正确的活动状态。我对任何方向都持开放态度,即使是解决此问题的完全不同的方法