【问题标题】:Apply Css for elements even after postback-jquery即使在 postback-jquery 之后也为元素应用 Css
【发布时间】:2011-04-11 04:41:53
【问题描述】:

我的 asp.net 应用中有许多 href(带有动态 ID),它们具有相同的 CssClass=MyClass。

我希望这些按钮在某个条件下隐藏。

我使用了.ready

$(document).ready(function() {
  if(condition)
    $('.MyClass').css("display","none");
});

问题是 docuement.ready 在有 poctback 时不执行。

回发==>按钮 visible.normal 因为我已将代码放入 .ready。

有没有办法持久化代码:$('.MyClass').css("display","none");

我尝试在按钮加载时应用.live(),但它不起作用。

有什么想法吗?

提前致谢。

【问题讨论】:

    标签: asp.net jquery css


    【解决方案1】:

    使用 jQuery livequery 插件:http://brandonaaron.net/code/livequery/docs

    live() 只绑定事件。安装插件后,使用:

    $('.MyClass') 
    .livequery(function() { 
        $(this).css("display","none");
    });
    

    这将在找到 MyClass 类的项目时隐藏它们,即使它们是从 Ajax 响应创建的。您甚至可以使用此代码代替您当前使用的 ready 函数。

    在这种情况下,Nick Craver 的解决方案更好,但前提是您必须仅在页面加载时评估 condition

    【讨论】:

    • 如果使用.livequery(),你应该在里面使用this,而不是同一个选择器......但这对于这种情况来说有点过分了:)
    • 啊,谢谢;我刚刚粘贴了那条线,应该更仔细地检查它。
    • 我所做的是:将 添加到我的 aspx.after 我添加了 SimpleCoder 的代码。
    【解决方案2】:

    您可以采用不同的方法,在 CSS 中定义样式,如下所示:

    body.conditionClass .MyClass { display: none; }
    

    然后在document.ready 上将那个 类应用到<body>,如下所示:

    $(function() {
      if(condition)
        $('body').addClass('conditionClass');
    });
    

    现在带有.MyClass 的新元素,<body> 中的任何位置都将获得display: none 样式。

    【讨论】:

    • @amourgh - 是的,这是一个演示:jsfiddle.net/nick_craver/ZZmBg 将条件更改为 false 并点击运行以查看相反的结果。
    • 是的,您的示例有效。我对这一行感到困惑:body.conditionClass .MyClass { display: none; MyClass 的定义在哪里。
    • @amourgh - 来自您在问题中的示例代码......您当前使用的任何类都是您为MyClass 输入的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    相关资源
    最近更新 更多