2016-03-14 144 views
1
$(document).ready(function(){ 
    $(".EditBusinessName").hide(); 

    $(".editBtn a").click(function() {  
     $(this).parent().parent('.myBusinessEdit').children('.EditBusinessName').show(); 
     $(this).hide(); 
    }); 

    $(".EditBusinessName a").click(function() { 
     $(this).parent().parent(".EditBusinessName").hide(); 
     $(this).parent().parent().parent().children(".editBtn").children("a").show(); 
    }); 
}); 

我怎麼能簡化上述代碼的代碼,而無需使用parent()children()選擇? divmyBusinessEdit將是每個部分的通用類。簡化無父母和孩子選擇

http://plnkr.co/edit/xgP49K51urBvZQlyLGxQ?p=preview

+0

爲什麼你不想使用'父()'或'兒童()'? '最接近()'和'find()'也可以工作,這取決於你的要求。 –

+0

一旦我在CMS中使用此靜態代碼,將會有額外的Div。 – Anoops

回答

0

邏輯本身是相當明顯的,所以沒有太多的簡化可以做。您當然可以使用closest()find()使代碼與HTML結構中父/子元素的數量減少嚴格對齊。試試這個:

$(".editBtn a").click(function() { 
 
    $(this).hide().closest('.myBusinessEdit').find('.EditBusinessName').show(); 
 
}); 
 

 
$(".EditBusinessName a").click(function() { 
 
    $(this).closest(".EditBusinessName").hide(); 
 
    $(this).closest('.myBusinessEdit').find(".editBtn a").show(); 
 
});
a { 
 
    border: solid 1px red; 
 
} 
 
.EditBusinessName { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div class="myBusinessEdit"> 
 
    <div class="editBtn"><a id="">Edit</a></div> 
 
    <div class="EditBusinessName"> 
 
     <div class=""> 
 
      XBusinessName 
 
      <a id="">Cancel</a> 
 
     </div> 
 
    </div> 
 
</div> 
 

 

 
<div class="myBusinessEdit"> 
 
    <div class="editBtn"><a id="">Edit</a></div> 
 
    <div class="EditBusinessName"> 
 
     <div class=""> 
 
      XBusinessName 
 
      <a id="">Cancel</a> 
 
     </div> 
 
    </div> 
 
</div> 
 

 
<div class="myBusinessEdit"> 
 
    <div class="editBtn"><a id="">Edit</a></div> 
 
    <div class="EditBusinessName"> 
 
     <div class=""> 
 
      XBusinessName 
 
      <a id="">Cancel</a> 
 
     </div> 
 
    </div> 
 
</div>

+0

謝謝你Rory :) – Anoops