2 votes

En cliquant sur un span, comment changer le contenu d'une autre div ?

Disons que j'ai ceci :

 <div class="title">Title Example 1</div>
 <span id="test">Button</span>

Et ensuite, en cliquant sur un span appelé #test, comment puis-je changer le texte dans .title ?

J'ai essayé de l'utiliser mais cela n'a pas fonctionné :

    $('#test').click(function(){
    $(".title").text("Haha");
    return false;
}); 

Tout le HTML :

<html>
<head>
    <title>Page</title>
    <link rel="stylesheet" href="index.css">
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    <script type="text/javascript" src="/fancybox/source/jquery.fancybox.js?v=2.1.5"></script>
        <script type="text/javascript">
        $('#test').click(function(){
    $(".title").text("Haha");
    return false;
}); 
    </script>
        <script type="text/javascript">
        $(document).ready(function() {
            /*
             *  Simple image gallery. Uses default settings
             */

            $('.fancybox').fancybox();

            /*
             *  Different effects
             */

             $('.fancybox-effects-a').fancybox({
                    autoDimensions: false,
                    height: 568,
                    width: 611
                }); 

            // Change title type, overlay closing speed
            $(".fancybox-effects-a").fancybox({
                helpers: {
                    title : {
                        type : 'outside'
                    },
                    overlay : {
                        speedOut : 0
                    }
                }
            });

            // Disable opening and closing animations, change title type
            $(".fancybox-effects-b").fancybox({
                openEffect  : 'none',
                closeEffect : 'none',

                helpers : {
                    title : {
                        type : 'over'
                    }
                }
            });

            // Set custom style, close if clicked, change title type and overlay color
            $(".fancybox-effects-c").fancybox({
                wrapCSS    : 'fancybox-custom',
                closeClick : true,

                openEffect : 'none',

                helpers : {
                    title : {
                        type : 'inside'
                    },
                    overlay : {
                        css : {
                            'background' : 'rgba(238,238,238,0.85)'
                        }
                    }
                }
            });

            // Remove padding, set opening and closing animations, close if clicked and disable overlay
            $(".fancybox-effects-d").fancybox({
                padding: 0,

                openEffect : 'elastic',
                openSpeed  : 150,

                closeEffect : 'elastic',
                closeSpeed  : 150,

                closeClick : true,

                helpers : {
                    overlay : null
                }
            });

            /*
             *  Button helper. Disable animations, hide close button, change title type and content
             */

            $('.fancybox-buttons').fancybox({
                openEffect  : 'none',
                closeEffect : 'none',

                prevEffect : 'none',
                nextEffect : 'none',

                closeBtn  : false,

                helpers : {
                    title : {
                        type : 'inside'
                    },
                    buttons : {}
                },

                afterLoad : function() {
                    this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');
                }
            });

            /*
             *  Thumbnail helper. Disable animations, hide close button, arrows and slide to next gallery item if clicked
             */

            $('.fancybox-thumbs').fancybox({
                prevEffect : 'none',
                nextEffect : 'none',

                closeBtn  : false,
                arrows    : false,
                nextClick : true,

                helpers : {
                    thumbs : {
                        width  : 50,
                        height : 50
                    }
                }
            });

            /*
             *  Media helper. Group items, disable animations, hide arrows, enable media and button helpers.
            */
            $('.fancybox-media')
                .attr('rel', 'media-gallery')
                .fancybox({
                    openEffect : 'none',
                    closeEffect : 'none',
                    prevEffect : 'none',
                    nextEffect : 'none',

                    arrows : false,
                    helpers : {
                        media : {},
                        buttons : {}
                    }
                });

            /*
             *  Open manually
             */

            $("#fancybox-manual-a").click(function() {
                $.fancybox.open('1_b.jpg');
            });

            $("#fancybox-manual-b").click(function() {
                $.fancybox.open({
                    href : 'iframe.html',
                    type : 'iframe',
                    padding : 5
                });
            });

            $("#fancybox-manual-c").click(function() {
                $.fancybox.open([
                    {
                        href : '1_b.jpg',
                        title : 'My title'
                    }, {
                        href : '2_b.jpg',
                        title : '2nd title'
                    }, {
                        href : '3_b.jpg'
                    }
                ], {
                    helpers : {
                        thumbs : {
                            width: 75,
                            height: 50
                        }
                    }
                });
            });

        });
    </script>
    <link rel="stylesheet" type="text/css" href="stackoverflow.com/fancybox/source/jquery.fancybox.css?v=2.1.5" media="screen" />
</head>
<body>
                 <div class="title">Title Example 1</div>
 <span id="test">Button</span>
</body>
</html>

2voto

Recipe Points 1308

Placez un "alert()" comme première instruction de votre fonction et voyez si vous obtenez une boîte de message popup ?

Editer : Essayez de placer votre fonction d'événement Click dans le bloc $(document).ready(function(){}). Je pense que votre fonction n'est jamais assignée à l'événement click du contrôle html.

Edit2 : Testé et confirmé. Votre script n'est jamais assigné au click event handler. Soit vous utilisez la balise html inline

<span id="test" onclick="myFunction()">button</span>

puis modifiez votre script pour qu'il soit contenu dans une fonction appelée myFunction

<script type="text/javascript">
        function myFunction() {
                $(".title").text("Haha"); //I would advise using .html here though
                return false;
        }
 </script>

ou l'assigner lorsque la page est complètement chargée grâce à JQuery

<script type="text/javascript">
        $(document).ready(function () {
            $('#test').click(function () {
                $(".title").text("Haha");
                return false;
            });
etc...
</script>

1voto

Quentin Points 325526

Vous essayez de lier le gestionnaire d'événement à l'élément avant qu'il n'existe.

Déplacer le <script> Il apparaît donc après les <span> .

-1voto

srakl Points 2390

Essayez .html() au lieu de .text() Et enroulez votre bind autour d'un document ready puisque vous l'appelez avant votre html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X