0

我提前感谢您阅读我的问题。

我是任何编程语言的新手。我编写了一些 jQuery 函数,每个 div 框在单击时打开和关闭。

我的想法是编写代码,当一个 div 打开所有其他 div 关闭时,它就会起作用。它非常实用,但我的代码现在太乱了。我想知道是否有人可以给我一些关于清理这个烂摊子的建议。

$(document).ready(function(){
var open_footer = 'click to hide';
var close_footer = 'click to see detail';

$('.text_area').hide();
$('.text_area>img').remove(); 
$('.click_me:eq(0)').click(function(){

    $(this).next('.text_area').slideToggle(100, function(){
    if($(this).is(':visible')){
    $('.text_area:eq(1)').hide(); $('.text_area:eq(2)').hide()
       $('.text_area:eq(3)').hide();
    $('#article_footer1').text(open_footer);
    $('#article_footer2').text(close_footer);

    $('#article_footer3').text(close_footer);$('#article_footer4').text(close_footer);
    $('.text_area:eq(0)').append('<img class="text_area_img" src="Hicks_Nat.jpg" "no-repeat"/>');
    $('.text_area:eq(1)>img').remove();$('.text_area:eq(2)>img').remove();$('.text_area:eq(3)>img').remove();
    } else if ($(this).is(':hidden')){

        $('#article_footer1').text(close_footer);
        $('.text_area:>img').remove();
        }
    });
});

这是一个代码块,我基本上还有 3 个类似的块。无论如何我可以简化这个吗?

编辑/这是CSS

 .click_me{
display: block;
display: none;

padding:10px;
width: 550px;
float:left;
margin-top:15px;
margin-left: 25px;
height: 75px;
overflow: hidden;
position: relative;
background:radial-gradient(center,circle,#EEEEE0 50%, white 80%);
opacity: 1;
border-radius:10px;
border: 1px solid silver;
-moz-border-radius:10px;
-webkit-border-radius:10px;
-moz-box-shadow:#999 2px 0px 3px;
box-shadow:rgb(110,110,110) 6px 6px 4px;
 }
.click_me:hover{
background: #DCDCDC;
 }
 .text_area{
font-family:arial;
font-weight: bold;
font-size: 14px;
text-align:left;
background:white;
border: 1px solid silver;
border-radius: 10px;
box-shadow:#999 2px 0px 3px;
margin-top:10px;
padding: 10px;
float:right;
max-height: 600px;
width: 500px;
overflow: auto;

}

4

1 回答 1

0

清理代码的方法主要是使用 CSS。因为我不知道你的代码是什么样的,所以我做了一些猜测。我没有完成这个,但要点在那里,应该让你开始缩短/清理你的代码:

CSS

.hidden {
    display: none;
}

.openText:after {
    content: "click to hide";
}

.closeText:after {
    content: "click to see detail";
}

HTML

<div class="section hidden" style="border: 2px solid orange; padding: 3px;">
    <text-area class="text_area">First</text-area>
    <p>Some more text here or images or whatever</p>
</div>
<footer class="click_me article_footer"></footer>
<div class="section hidden" style="border: 2px solid orange; padding: 3px;">
    <text-area class="text_area">Second</text-area>
    <p>Some more text here for section 2</p>
</div>
<footer class="click_me article_footer"></footer>
<div class="section hidden" style="border: 2px solid orange; padding: 3px;">
    <text-area class="text_area">Third</text-area>
    <p>Section 3 additional stuff.</p>
</div>
<footer class="click_me article_footer"></footer>

JAVASCRIPT:

$(document).ready(function(){
    function myToggle(ele) {
        $(ele).prev('div').toggleClass('hidden');
        $(ele).toggleClass('openText closeText');
    };

    $('.article_footer').addClass('closeText');
    $('.click_me').click(function() {
        var triggerElem = this;
        $('.openText').each(function() {
            if (this != triggerElem) {
                myToggle(this);
            }
        });
        myToggle(this);
    });
});
于 2012-07-26T21:21:55.163 回答