2016-03-14 146 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