.text& Jquery中的.attr无法在IE中运行

时间:2011-04-02 00:34:12

标签: javascript jquery internet-explorer innerhtml

我在使用Internet Explorer(7-8)中的功能时遇到了一些麻烦。我的问题是我需要隐藏一些链接,直到用户登录,我会做这个服务器端;但是,足以说我无法做到这一点。

我的方法是加载一组文本(登录/注销),它将改变服务器端并测试注销值。我是通过在Jquery中使用id加载div并使用.text()来实现这一点的,当IE 7-8都拒绝运行时,即dev工具告诉我“对象不支持此属性或方法”并带有引用返回到包含此查找的代码行。代码发布如下:

function logintest(){
        login_test= "Sign out";
        alert($('#log').text());
        login = $('#log').text();
        if(login.search(login_test) == -1){
            $('#hiddenBox').css('display','none');
        }
    };

有趣的是警报正常运行并显示正确的文本字符串。在此失败后,我尝试使用.attr()并得到相同的结果。任何帮助都会很棒!

Jquery版本:1.4.4 网站:www.brainwellnesspro.com IE:赢得xp 7-8

2 个答案:

答案 0 :(得分:0)

看看你的网站我首先要修复html是有效的,这不好:

<div id="log" name="<a href='http://www.brainwellnesspro.com/login.php' onclick=''>Sign in</a> or <a href='http://www.brainwellnesspro.com/login.php?action=create_account' onclick=''>Create an account</a>">
<a href='http://www.brainwellnesspro.com/login.php' onclick=''>Sign in</a> or <a href='http://www.brainwellnesspro.com/login.php?action=create_account' onclick=''>Create an account</a>
</div>

由于你已经有了jquery,你可以像这样检查登录链接的当前文本值

function logintest(){
   if($("#log a").first().text() !== "Sign out"){
     $('#hiddenBox').css('display','none');
   }
};

答案 1 :(得分:0)

  

我的问题是我需要隐藏一些   链接直到用户登录,我会这样做   这个服务器端;但是,足够了   说我无法做到这一点。

为什么不呢?当然,您的应用程序应该知道用户是否已登录(并且能够以相应的方式进行相应的渲染?)

无论如何 - 没有看到你的标记(带有id ='log'的元素的上下文(这是什么类型的元素?)....

if(login.search(login_test) == -1)

应该是

if(login.search(login_test) == '-1')