重构 jQuery 代码



第一个问题,所以要善待;)

我正在尝试重构这个函数:

jQuery(document).ready(function( $ ){
      //One
      $('.flip').click(function(){
        var link = $(this);
        $('.panel').slideToggle('slow', function() {
            if ($(this).is(":visible")) {
                 link.text('Close');                
            } else {
                 link.text('Read More');                
            }        
        });        
    });
    //Two
    $('.flip2').click(function(){
        var link = $(this);
        $('.panel2').slideToggle('slow', function() {
            if ($(this).is(":visible")) {
                 link.text('Close');                
            } else {
                 link.text('Read More');                
            }        
        });        
    });
    //Three
    $('.flip3').click(function(){
        var link = $(this);
        $('.panel3').slideToggle('slow', function() {
            if ($(this).is(":visible")) {
                 link.text('Close');                
            } else {
                 link.text('Read More');                
            }        
        });        
    });
    //Four
    $('.flip4').click(function(){
        var link = $(this);
        $('.panel4').slideToggle('slow', function() {
            if ($(this).is(":visible")) {
                 link.text('Close');                
            } else {
                 link.text('Read More');                
            }        
        });        
    });
    //Five
    $('.flip5').click(function(){
        var link = $(this);
        $('.panel5').slideToggle('slow', function() {
            if ($(this).is(":visible")) {
                 link.text('Close');                
            } else {
                 link.text('Read More');                
            }        
        });        
    });
    //six
    $('.flip6').click(function(){
        var link = $(this);
        $('.panel6').slideToggle('slow', function() {
            if ($(this).is(":visible")) {
                 link.text('Close');                
            } else {
                 link.text('Read More');                
            }        
        });        
    });
    //Seven
    $('.flip7').click(function(){
        var link = $(this);
        $('.panel7').slideToggle('slow', function() {
            if ($(this).is(":visible")) {
                 link.text('Close');                
            } else {
                 link.text('Read More');                
            }        
        });        
    });
    //Eight
    $('.flip8').click(function(){
        var link = $(this);
        $('.panel8').slideToggle('slow', function() {
            if ($(this).is(":visible")) {
                 link.text('Close');                
            } else {
                 link.text('Read More');                
            }        
        });        
    });
    //Nine
    $('.flip9').click(function(){
        var link = $(this);
        $('.panel9').slideToggle('slow', function() {
            if ($(this).is(":visible")) {
                 link.text('Close');                
            } else {
                 link.text('Read More');                
            }        
        });        
    });

    //Ten
    $('.flip10').click(function(){
        var link = $(this);
        $('.panel10').slideToggle('slow', function() {
            if ($(this).is(":visible")) {
                 link.text('Close');                
            } else {
                 link.text('Read More');                
            }        
        });        
    });


    });

我希望它只是一个可以做到这一点的功能。 我应该转向哪里?我应该读什么文章?我真的被困在这件事上了!

干杯

编辑:

这是 HTML:

<!-- section six -->
<h3 class="text-center">How to use promotional feather banners?</h3>
Feather banners are a brilliant way to guide people around your business premises, or liven up a local event with some custom advertising. These flags are very quick to set up — use them to transform a space in minutes.
<div class="panel6">
These branded flags can be used in a cluster or on their own — depends on the effect you want to create. A single large flag can make a good impression on people passing by on foot or in their cars, whereas a cluster of smaller or medium flags can make a nice walkway through a retail forecourt, or show people where to walk at a large event. All our flags come in a range of sizes and sets to suit different budgets — just speak to one of the team who can take you through all the different options.
Businesses that need to grab people’s attention fast often opt for flag advertising — real estate agents, food retailers, and car dealerships being just some of our regular flag customers. <strong>Our flags help Aussie businesses really stand out against their competition.</strong>
Our flag bases and poles are all sold separately — we will help you find the right flag bundle for your needs. We stock both hard ground and soft ground feather flag kits so that you are always prepared for any event or eventuality. See for yourself how easy they are to set up and install.
<center><button class="trigger-btn trigger-1250" style="padding: 10px;">Enquire today for some great offers</button></center>
<div class="text-center"><strong>Flag us down and speak to an expert on 1300 556 589</strong></div>
&nbsp;
</div>
<p class="flip6">Read More</p>

<hr />
<!-- section six end -->

如果您为所有翻转元素提供相同的类,并通过某个属性将每个面板绑定到正确的翻转,则可以在一键事件中执行此操作。

例如,在给定的 HTML 中:

<a class="flip" id="flip1 ">flip 1</a>
<a class="flip" id="flip2">flip 2</a>
<div class="panel panel1" data-id="flip1"></div>
<div class="panel panel2" data-id="flip2"></div>

现在可以只运行 1 次单击事件来执行此操作

$('.flip').click(function(){
    var link = $(this);
    var id = $(this).attr("id");
    // use the attribute data-id to find the element.
    $('.panel[data-id='+ id +']').slideToggle('slow', function() {
        if ($(this).is(":visible")) {
             link.text('Close');                
        } else {
             link.text('Read More');                
        }        
    });        
});

最新更新