我在MasterPage中有一个SharePoint ASPMenu,我正在尝试使用jQuery更改所选的样式类。基本上,当用户单击菜单项时,它将导致回发,以便将页面定向到单击的菜单URL。当用户点击菜单项时,我将URL放入cookie中。然后当页面加载时我将为所选菜单设置样式。这是我到目前为止的代码
$(document).ready(function () {
LinkClicked();
FireMe();
});
function FireMe()
{
var val = $.cookie('sabValue');
if(val !== null)
{
$(".s4-tn a").each(function(){
$(this).removeClass("selected").closest("li").removeClass("selected");
});
$(".s4-tn a[href='"+val+"']").addClass("selected").closest("li").addClass("selected");
}
}
function LinkClicked(){
$(".s4-tn a").click(function() {
var sabValue = $(this).attr("href");
$.cookie('sabValue',sabValue );
});
}
我的问题是,在页面加载后(用户点击菜单后),不会发生更改。我必须再次单击该菜单项,以便应用所选样式。
这是ASPMenu声明
<SharePoint:AspMenu
ID="TopNavigationMenuV4"
Runat="server"
EnableViewState="false"
DataSourceID="topSiteMap"
AccessKey="<%$Resources:wss,navigation_accesskey%>"
UseSimpleRendering="true"
UseSeparateCss="false"
Orientation="Horizontal"
StaticDisplayLevels="2"
MaximumDynamicDisplayLevels="2"
SkipLinkText=""
CssClass="s4-tn"/>
为什么会这样。 感谢任何帮助。 感谢
答案 0 :(得分:1)
您是否尝试过从LinkClicked内部调用FireMe()? :
function LinkClicked(){
$(".s4-tn a").click(function() {
var sabValue = $(this).attr("href");
$.cookie('sabValue',sabValue );
FireMe(); //you could pass a value here, too
});
}
答案 1 :(得分:1)
点击处理程序中没有任何内容可以更改类。你的fireMe(0已经在页面加载时被触发了。你可以在处理程序中调用Fireme()但是更有效率只是将类添加到“this”
function LinkClicked(){
$(".s4-tn a").click(function() {
var sabValue = $(this).attr("href");
$.cookie('sabValue',sabValue );
$(".s4-tn a.selected").removeClass("selected");
$(this).addClass('selected');
});
}