Search code examples
jquerymaterialize

Materialize get data info from trigger


Is there a way to transmit to the modal div some data from the trigger button?

Here my code.

<button data-id="123" class="modal-trigger" href="#info-modal">OPEN 123</button>
<button data-id="456" class="modal-trigger" href="#info-modal">OPEN 456</button>
<div class="modal">
    <div class="modal-content">
        <h4>My Modal</h4>
        <p>this info arrives from the data-id attribute on the trigger.</p>
    </div>
    <div class="modal-footer">
        <a href="#!" class="modal-close waves-effect waves-red btn-flat">CLOSE</a>
    </div>
</div>
<script>
    jQuery( document ).ready(function($) {
        $(".modal").modal({
            onOpenStart: function(){
                // changes the p content inside .modal-content from the data-id triggered button.
            }
        });
    });
</script>

Solution

  • You can add click listener to your buttons and then when button is clicked you can use this reference to grab value of data-id attribute from button that is clicked and then put that value inside modal using .html() method.

    Here is a working example and your modified code:

    <button data-id="123" class="modal-trigger" href="#info-modal">OPEN 123</button>
    <button data-id="456" class="modal-trigger" href="#info-modal">OPEN 456</button>
    <link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
    <div class="modal" id="modal">
        <div class="modal-content">
            <h4>My Modal</h4>
            <p>this info arrives from the data-id attribute on the trigger.</p>
        </div>
        <div class="modal-footer">
            <a href="#!" class="modal-close waves-effect waves-red btn-flat">CLOSE</a>
        </div>
    </div>
    <!-- jQuery -->
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
    <!-- Have fun using Bootstrap JS -->
    <script type="text/javascript">
        $( document ).ready(function($) {
        $(".modal-trigger").click(function(){
              var data_id = $(this).attr('data-id');
              $("#modal .modal-content p").html(data_id);
              $('#modal').modal('show');
        });
            
        });
    </script>