将jQuery函数组合到一个函数中

时间:2016-10-13 08:45:44

标签: jquery

我正在制作一种工作板,并且有两种模式可以从一个页面触发,而不是在同一时间。我创建了这些函数来触发模态。你可以建议我如何用最短的方式写它(如果可能的话)。谢谢。 所以这是我的HTML代码的主要部分:

                <div class="col-md-9">
                    <a id="test" href="#destination">FIRST modal</a>
                    <!-- Modal -->
                    <div id="destination"></div>
                    <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                        <div class="modal-dialog">
                            <div class="modal-content">
                                <div class="modal-header">
                                    <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
                                    <h4 class="modal-title" id="myModalLabel">Modal title</h4>
                                </div>
                                <div class="modal-body">
                                    <h3>First Modal</h3>
                                </div>
                                <div class="modal-footer">
                                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                                    <button type="button" class="btn btn-primary">Save changes</button>
                                </div>
                            </div>
                        </div>
                    </div>  <!-- END First -->

                    <a id="test2" href="#destination2">SECOND modal</a>
                    <!-- Modal -->
                    <div id="destination2"></div>
                    <div class="modal fade" id="myModal2" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                        <div class="modal-dialog">
                            <div class="modal-content">
                                <div class="modal-header">
                                    <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
                                    <h4 class="modal-title" id="myModalLabel">Modal title</h4>
                                </div>
                                <div class="modal-body">

                                    <h3>Second Modal</h3>

                                </div>
                                <div class="modal-footer">
                                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                                    <button type="button" class="btn btn-primary">Save changes</button>
                                </div>
                            </div>
                        </div>
                    </div>  <!-- END Second -->

和Jquery我想“缩短”

jQuery(function (){
    $('#test').click(function(){
        $('#myModal').modal('show');
    });
    $('#test2').click(function(){
        $('#myModal2').modal('show');
    });
});

2 个答案:

答案 0 :(得分:2)

您可以使用DRY原则来整理代码。首先在触发模态的元素上使用公共类,并使用data-*属性来存储该元素的唯一关系。

<button type="button" class="test" data-target="#myModal">Open modal</button>
<button type="button" class="test" data-target="#myModal2">Open modal #2</button>

然后,您可以在点击处理程序中阅读data属性,以便在正确的元素上调用modal()

jQuery(function (){
    $('.test').click(function(){
        var target = $(this).data('target');
        $(target).modal('show');
    });
});

答案 1 :(得分:0)

如果在您的HTML中,您的元素#test#test2具有data-id属性,例如,您可以执行以下操作:

jQuery(function (){
    $('#test, #test2').click(function(){
        var id = $(this).attr('data-id');
        $('#myModal'+id).modal('show');
    });
});

如果某个元素的data-id属性为2,则此函数会打开模态#myModal2