我正在尝试根据cookie值显示/隐藏html标记。 我可以通过为该锚标签分配ID并在javascript中将其显示为none来实现此目的,但我只想在html中。
示例代码:
从Cookie获取CompanyName。
$(document).ready(function () {
var companyName = getCookie("GlobalCompanyName"));
});
想要做这样的事情。
<div class="coach_title_row">
<% if (companyName == "XYZ" )
{ %>
<a class="new" href="<%= this.ResolveUrl("~/")%>Reports/Tool/Step1.aspx" title="Create New Report"><img src="<%= this.ResolveUrl("~/")%>Static/V3/Images/ReportingTool/new_report.png"/></a>
<% } %>
</div>
我知道如何使用jQuery执行此操作,但我只是不想使用它。我问是否可以在html中使用jQuery变量进行比较(在if / else语句中)。
答案 0 :(得分:0)
起初我想知道为什么不只是使用常规的javascript / jquery?但是,在查看您提供给我们的代码时,我认为您可能需要一种解决方法。解决方案似乎相当简单,所以我想我可能不太了解您的问题,或许有关您正在使用的堆栈的更多细节会有帮助吗?
这是使用简单的简单jQuery执行此操作的方法。但是,根据您的设置,下面的解释很可能无法解决这个问题。
var companyName;
var myHtml = "<a href="#">Whatever you need here</a>;
jQuery(document).ready(function () {
companyName = getCookie("GlobalCompanyName"));
if(companyName == 'xyz'){
jQuery('.coach_title_row).append(myHtml);
}
});
现在,说过,看起来你正在使用模板表示法中的ASP。为什么不在控制器中获取cookie值并将其传递给您的视图?它比在这种情况下尝试使用javascript要干净得多。
此外,如果您使用javascript插入包含模板化属性的html,则可能会遇到延迟加载的一些问题。 html将加载,但后端的东西都不会呈现,因为javascript正在客户端运行时插入此内容。
解决方法是将链接插入到您的视图中,然后使用javascript来显示&#39;如果cookie正确,则加载页面上的div。
html:
div class="coach_title_row">
<a class="new" **style="display"none"**; href="<%= this.ResolveUrl("~/")%>Reports/Tool/Step1.aspx" title="Create New Report">
<img src="<%= this.ResolveUrl("~/")%>Static/V3/Images/ReportingTool/new_report.png"/>
</a>
</div>
脚本:
var companyName;
jQuery(document).ready(function () {
companyName = getCookie("GlobalCompanyName"));
// Instead just show the link already loaded, given cookie is correct
if(companyName == 'xyz'){
jQuery('.new').css('display','block');
}
});