1

我面临一个非常奇怪的问题。这是我的代码:

<div id="status">
        <div id="armStatus">
            <div id="armText">
                <fieldset data-role="controlgroup">
                    <legend>Unit</legend>
                    <input type="checkbox" class="CB" name="armCB_1" id="armCB_1" class="custom" data-mini="true" />
                    <label for="armCB_1">Arming Status</label>
                    <p id="armingtext"></p>
                </fieldset>
             </div>
        </div>
        <table class="config" id="status_table">
            <thead>
                <tr>
                    <th colspan="4"; style= "padding-bottom: 20px; color:#6666FF; text-align:left; font-size: 1.5em">Feedback Status</th>
                </tr>
                <tr>
                    <th>Index</th>

                    <th>Feedback Type</th>
                    <th>Feedback Number</th>
                    <th>Status</th>
                    <th class="cHide">Monitor?</th>
                    <th class="cHide">Remove?</th>
                </tr>
            </thead>
            <tbody>
                 <tr>
                 </tr>
            </tbody>       
       </table>
       <button type="button" id="monitor" class="cHide" data-role="button" data-mini="true" data-transition="fade">Monitor</button>

    </div>

如上所示,该按钮与 2 个表头和“删除?”monitor具有相同的类。但是当它被调用时:.cHidemonitor?

$(".cHide").hide();

只有monitor?andremove?列被隐藏,但monitor按钮仍然存在。为什么呢?怎么了?

编辑:如果它是独立的,它似乎工作正常。我怀疑会不会是因为

 $('#monitor').button('enable');

放在某个地方?

这是我隐藏和显示的代码的一部分.cHide(在document.ready中)

 $('.done').click(function(){
            $('#n_keypad').hide();
            login_code = $('#myInput').val();

            $.post( '/login' , {passcode:login_code.toString()})
                .done(function(reply) {
                    $("#login_div").hide();
                    alert("You are login as " + reply);
                    if (reply=="engineer"){
                         $("#securityMode").show();
                         $("#labels").show();
                         $("#status").show();
                         $("#display").show();                             
                         $("#logoutbutton").show();
                         $(".cHide").show();
                         $("#loginbutton").hide();
                         $("#configtable").hide();
                    }   
                    else if(reply=="user"){
                        $("#securityMode").show();                            
                        $("#configtable").show();
                        $("#logoutbutton").show();
                        $("#labels").hide();
                        $("#status").show();
                        $("#display").hide();
                        $("#configeditdiv").hide();                            
                        $(".cHide").hide();


                    }
4

3 回答 3

5

jQuery Mobile 在隐藏按钮时遇到了问题,因为框架将按钮包装在一个样式化的 div 中并隐藏了按钮(即您试图隐藏一个已经隐藏的按钮)。这个问题已经被这个问题解决了:jquery mobile can not hide submit button

这表明类似的东西$('.cHide').closest('.ui-btn').hide();应该适合你。试一试,让我知道它是否有效:)

于 2013-05-15T08:02:16.660 回答
0

hide 所做的是将样式显示属性设置为无。执行您的代码并使用调试器工具(如 chrome 开发工具)检查元素并查看按钮上是否设置了属性

于 2013-05-15T07:42:01.627 回答
-1

尝试使用其 ID 隐藏按钮。$("#monitor").hide()

于 2013-05-15T08:18:31.317 回答