0

我使用带有标签插件的 jQuery 1.7.2 和 UI 1.8.21。

我有三个选项卡,每个选项卡都有一个跨度表,我想根据一些 javascript 变量的值隐藏/显示。

它在第一个选项卡上工作正常,但第二个和第三个选项卡没有。我使用相同的功能来打开/关闭跨度。

我无法在 jsfiddle 上重现此问题。它工作正常。

function toggle_svn_user(codebase){

    if (codebase=="trunk" && user==trunk_svn_user){
        $('#'+codebase+"_svn_user").hide();
        $('#'+codebase+"_svn_relocate_cmd").hide();

        //$('#'+codebase+"_svn_user").css('display', 'none');
        console.log("hide "+codebase);
        console.log($('#'+codebase+"_svn_relocate_cmd").attr('style'));
    }else{
        $('#'+codebase+"_svn_user").show();
        $('#'+codebase+"_svn_relocate_cmd").show();
    }
 }

其他两个选项卡还有两个 if 块。这适用于“分支”代码库。所以我开始使用“主干”代码库对其进行调试。

toggle_svn_user() 函数在$(document).ready(function(){块中运行。我还添加了按钮以随时触发该功能。这给了我同样的结果。console.log() 显示有什么奇怪的,display: none;但是当我使用 firebug 查看 html 时,我可以看到display: inline;。我可以单击按钮,console.log 和 html 不匹配。

我尝试使用 jQuery 的 .hide(),.css('display', 'none');.css('display', 'none !important');没有任何帮助。我尝试将我的应用程序与具有相同结果的选项卡一起使用。

知道如何解决吗?或者如何显示/隐藏跨度?

<span class="" id="trunk_svn_user">svn user:<span id="trunk_svn_user_value"></span></span>';
4

1 回答 1

1

我的猜测是其他if块之一可能会干扰 - 如果您注释掉其他情况,它会起作用吗?

在旁注中,您可以使用 jQuery 的toggle方法来简化您的代码。.toggle( showOrHide )见本页第三个用法:http: //api.jquery.com/toggle/

这是一个例子:

function toggle_svn_user(codebase){

    if (codebase=="trunk"){
        var showUser = (user == trunk_svn_user)

        $('#'+codebase+"_svn_user").toggle(showUser);
        $('#'+codebase+"_svn_relocate_cmd").toggle(showUser);

        console.log($('#'+codebase+"_svn_relocate_cmd").attr('style'));
    }
}
于 2012-09-05T02:09:29.617 回答