0

我有aspnet表单,jquery函数是加载的:

<script type="text/javascript">
    $(document).ready(function () {
        var table = document.getElementById('<%=grdNews.ClientID%>');
        var tableDnD = new TableDnD();
        tableDnD.init(table);
    })
</script>

仅供参考:这不是我的代码,我还没有开发 TableDnD 类。此 clss 为 aspnet 形式的一个表附加了拖放功能。

这里一切正常。

但是,现在我有了一个新的要求:对于一些用户我不需要做这个 jquery,对于一些 - 这个 jquery仍然是必要的。我怎样才能以编程方式实现这一目标?这将是这样的:

ON PAGE LOAD:
if (User == SpecificUser) 
{
     ALLOW_ABOVE_JQUERY (LOAD JQUERY FUNCTION ON LOAD) //?HOW
}
else 
{
     DO_NOT_ALLOW_ABOVE_JQUERY (DISABLE LOADING JQUERY FUNCTION ON LOAD) //?HOW
}

这是关于背后代码中的 javascript 的东西,但这是 $(document).ready 让我感到困惑。

4

2 回答 2

3

您可以在标记中使用服务器标签:

<% if (User == SpecificUser) { %>
<script type="text/javascript">
  $(document).ready(function () {
    var table = document.getElementById('<%=grdNews.ClientID%>');
    var tableDnD = new TableDnD();
    tableDnD.init(table);
  });
</script>
<% } %>

或者,您可以将其放在占位符中:

<asp:PlaceHolder ID="ScriptContainer" runat="server">
<script type="text/javascript">
  $(document).ready(function () {
    var table = document.getElementById('<%=grdNews.ClientID%>');
    var tableDnD = new TableDnD();
    tableDnD.init(table);
  });
</script>
</asp:PlaceHolder>

然后隐藏代码后面的内容:

if (User != SpecificUser) {
  ScriptContainer.Visible = false;
}
于 2012-08-22T07:55:19.983 回答
1

您可以拥有一个 javascript 变量shouldDnD并添加必要的代码以在服务器上设置其值,并稍后使用该变量来决定是否打开 DnD。例如:

<script type="text/javascript">
var shouldDnD = <%= User == SpecificUser %>
if (shouldDnD) {
    $(document).ready(function () {
        var table = document.getElementById('<%=grdNews.ClientID%>');
        var tableDnD = new TableDnD();
        tableDnD.init(table);
    })
}
</script>

您也可以在函数内部进行 shouldDnD 检查,具体取决于代码的其余部分。

于 2012-08-22T08:03:12.127 回答