2016-06-27 6 views
0

jquery를 사용하여 서버 컨트롤 (예 : 텍스트 상자 및 드롭 다운 목록)의 표시 및 숨기기를 수행하고 있습니다.페이지에서 공간을 차지하는 jquery를 사용하여 요소 숨기기

표시 및 숨기기가 잘 작동하지만 숨겨진 요소가 페이지의 빈 공간을 차지합니다.

I() 함수 JQuery와 숨기기를 사용한 후 요소를 숨기기 위해 트릭을 다음 시도했다 :

CSS ('가시', '숨겨진')

CSS ('디스플레이', ' 여전히 this Question

그러나 같은 문제에 정의 된대로 없음 ')

. 여기

<script> 
    $(document).on("click", ".edit", function() { 
    var col_name= $(this).data('col_name'); 
    var tbl_name = $(this).data('tbl_name'); 
    var tr = $(this).parent().parent(); 
    var tdRecords = $(tr).children(); 
    var CurrValue = $(tdRecords[0]).text(); 
    $('#<%= txt_Curr_Val.ClientID %>').val(CurrValue); 
    $('#<%=txt_colname.ClientID%>').val(col_name); 
    $('#<%=txt_tblname.ClientID%>').val(tbl_name); 
     if (col_name == 'relig_code') 
     { 
      $('#<%=ddl_relig.ClientID%>').show('slow'); 
      //$('#<%=txt_New_Val.ClientID%>').hide('slow'); 
      $('#<%=txt_New_Val.ClientID%>').css('visibility', 'hidden') 
     } 
     else 
     { 
      //$('#<%=ddl_relig.ClientID%>').hide('slow'); 
      $('#<%=ddl_relig.ClientID%>').css('visibility', 'hidden') 
      $('#<%=txt_New_Val.ClientID%>').show('slow') 
     } 
    }); 
    </script> 

는 HTML입니다 : 여기

내 코드입니다

<div class="modal-body"> 
         <div class="row"> 
          <div class="col-md-3"> 
           Current Value : 
          </div> 
          <div class="col-md-8"> 
           <asp:TextBox CssClass="txtstyle txtwidth" runat="server" ID="txt_Curr_Val" TextMode="MultiLine"></asp:TextBox> 
          </div> 
         </div> 
         <div class="row"> 
          <div class="col-md-3"> 
           New Value : 
          </div> 
          <div class="col-md-8"> 
           <asp:TextBox CssClass="txtstyle txtwidth" runat="server" ID="txt_New_Val" TextMode="MultiLine"></asp:TextBox><br /> 
           <asp:DropDownList runat="server" ID="ddl_relig"></asp:DropDownList><br /> 
           <asp:TextBox CssClass="txtstyle" runat="server" ID="txt_tblname" ></asp:TextBox><br /> 
           <asp:TextBox CssClass="txtstyle" runat="server" ID="txt_colname"></asp:TextBox> 
          </div> 
         </div> 

        </div> 

표시 시도 후 : 없음을

같은 그 모양 :

enter image description here

어떻게 해결할 수 있습니까? 당신의 도움이

+0

'display : none'이 정확한 요구 사항을 충족시킵니다. 왜 그것이 당신을 위해 작동하지 않는지 설명해 주시겠습니까? –

+0

@PaulZahra 이미 내 질문에 당신이 지적한 질문의 대답을 시도했습니다. –

+0

다른 CSS로 표시해야합니다 ... 대부분의 브라우저의 개발자 모드에서는 CSS를 보았습니다. 요소. –

답변

0

문제는 컨트롤 사이에 줄 바꿈 (<br/>)의 존재가 될 것으로 보인다. newLine 클래스는 각 요소에 적용되는

.newLine 
{ 
    display: block; 
} 

: :이 showhide의 jQuery 기능은 다음 사용할 수 있습니다

<div class="col-md-8"> 
    <asp:TextBox CssClass="txtstyle txtwidth newLine" runat="server" ID="txt_New_Val" TextMode="MultiLine" /> 
    <asp:DropDownList CssClass="newLine" runat="server" ID="ddl_relig" /> 
    <asp:TextBox CssClass="txtstyle newLine" runat="server" ID="txt_tblname" /> 
    <asp:TextBox CssClass="txtstyle newLine" runat="server" ID="txt_colname" /> 
</div> 

당신은 당신이 block 디스플레이 모드를 설정하는 클래스 스타일로 대체 할 수 있습니다 컨트롤 사이에 여분의 공간을 남기지 않습니다 :

$(document).on("click", ".edit", function() { 
    ... 
    if (col_name == 'relig_code') { 
     $('#<%=ddl_relig.ClientID%>').show('slow'); 
     $('#<%=txt_New_Val.ClientID%>').hide('slow'); 
    } 
    else { 
     $('#<%=ddl_relig.ClientID%>').hide('slow'); 
     $('#<%=txt_New_Val.ClientID%>').show('slow') 
    } 
}); 
+0

정말 고마워요, 그냥 실수 였어 .. 고마워. .. 일 했어. –

1

에 대한

덕분에 당신은 시도 할 수 :

$('#<%=ddl_relig.ClientID%>').css('position', 'absolute') 
$('#<%=ddl_relig.ClientID%>').css('left', '-9999px') 
+3

'opacity : 0'은 요소가 여전히 DOM에서 공간을 차지할 것임을 의미합니다. 'display : none'은 정확히 OP가 필요로하는 것이므로 여기에 근본적인 문제가 있습니다. –

관련 문제