часть кода javascript работает, часть нет

#javascript

#javascript

Вопрос:

Я здесь над головой, но я изучаю javascript и хотел добавить классную функцию на веб-сайт, который я создаю для дня рождения моей жены, а также продвинуть себя дальше в язык.

Я вытащил код из руководства по веб-сайту, и там код работает просто отлично. HTML и CSS на моем сайте идеальны, но javascript не соответствует. У меня есть JS-код для другой функции, и он работает просто отлично, но код из руководства не работает, и мне было интересно, связано ли это с тем, что два отдельных JS-кода конкурируют друг с другом или неправильно написаны вместе в JS-файле.

Есть hammer.js файлы, о которых я, по общему признанию, знаю очень мало.

Как я уже сказал, это для дня рождения моей жены, и я просто хотел добавить эту функцию, одновременно углубляя меня в javascript.

Заранее спасибо за любую информацию.

Вот файл JS с двумя отдельными функциями:

 $(".question").click(function() {
    $(this).next().fadeToggle("fast");
    $(this).children();
});




$(function() {

    var $wrapper= $( '#fc-wrapper' ),
        $handle = $wrapper.children( 'div.fc-handle-pull' );

    $handle.on( 'click', function( event ) {

        ( $handle.data( 'opened' ) ) ? close() : open();

    } );

    $wrapper.hammer().bind( 'dragend', function( event ) {
        switch( event.direction ) {
            case 'right'    : open(); break;
            case 'left'     : close(); break;
        }
    });

    function open() {
        $wrapper.addClass( 'fc-wrapper-open' );
        $handle.data( 'opened', true );
    }

    function close() {
        $wrapper.removeClass( 'fc-wrapper-open' );
        $handle.data( 'opened', false );
    }

});
  

Вот как это связано в html-файле. Я просто размещаю ссылки на скрипты, поскольку все остальное, похоже, работает нормально. Как указано выше, все коды взяты из учебника, который работает так, как должен, просто вопрос не в самом коде, а в том, как он размещен в файлах или как он связан, или если отсутствуют какие-либо ссылки. :

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
        <script type="text/javascript" src="hammer.js"></script>
        <script type="text/javascript" src="jquery.hammer.js"></script>
       <script type="text/javascript" src="index.js"></script>


    </body>
</html>
  

HTML:

 <div class="fc-wrapper">

    <!-- right-most handle piece -->
    <div class="fc-handle fc-handle-pull"></div>

    <div class="fc-perspective">

        <!-- right part overlay; get's darker -->
        <div class="fc-overlay fc-overlay-reverse"></div>

        <!-- middle handle piece -->
        <div class="fc-handle fc-handle-out"><div></div></div>

        <!-- inner bottom content part -->
        <div class="fc-bottom">
            <div class="fc-bottom-bg">
                <div class="fc-content">
                    <p>I can live with doubt, and uncertainty, and not knowing. I think it's much more interesting to live not knowing than to have answers which might be wrong. <span>Richard Feynman</span></p>
                </div>
            </div>
            <div class="fc-overlay fc-overlay-solid"></div>
        </div><!-- //fc-bottom -->

        <!-- front and back of the flipping half -->
        <div class="fc-flip">

            <div class="fc-front">

                <div class="fc-inner">

                    <div class="fc-overlay fc-overlay-left"></div>
                    <!-- left-most part of handle -->
                    <div class="fc-handle fc-handle-in"><div></div></div>

                    <div class="fc-content">
                        <h3>Dubai</h3>

                    </div>

                </div>

            </div><!-- //fc-front -->

            <div class="fc-back">

                <div class="fc-inner">

                    <div class="fc-content">
                        <div class="feynman">
                            <span>1918 – 1988</span>
                        </div>
                    </div>

                    <div class="fc-overlay fc-overlay-right"></div>

                </div>

            </div><!-- //fc-back -->                 

        </div><!-- //fc-flip -->                 

    </div><!-- //fc-perspective -->

</div><!-- //fc-wrapper -->
  

jquery.hammer.js файл:

 /*
 * Hammer.JS jQuery plugin
 * version 0.3
 * author: Eight Media
 * https://github.com/EightMedia/hammer.js
 */
jQuery.fn.hammer = function(options)
{
    return this.each(function()
    {
        var hammer = new Hammer(this, options);

        var $el = jQuery(this);
        $el.data("hammer", hammer);

        var events = ['hold','tap','doubletap','transformstart','transform','transformend','dragstart','drag','dragend','swipe','release'];

        for(var e=0; e<events.length; e  ) {
            hammer['on'  events[e]] = (function(el, eventName) {
                return function(ev) {
                    el.trigger(jQuery.Event(eventName, ev));
                };
            })($el, events[e]);
        }
    });
};
  

Комментарии:

1. Javascript создает ряд ссылок на классы, которые должны существовать в вашем html. Будет очень сложно помочь, не имея возможности увидеть, правильный ли ваш html

2. Когда вы удаляете всю болтовню из своего поста, у вас остается: это мой код, я скопировал часть его из учебника, он не работает. Нет информации, нет вопросов. StackOverflow — это не форум.

3. Какую ошибку вы получаете? Что насчет этого не работает?

4. Хорошо, еще одна большая проблема заключается в том, что то, что вы опубликовали, совсем не похоже на учебник. Я предполагаю, что есть целый ряд CSS, которые вы не указали в своем вопросе. Я подозреваю, что самое главное, что вы удалили id="fc-wrapper" из fc-оболочки div . <div class="fc-wrapper"> Вернитесь к <div id="fc-wrapper" class="fc-wrapper"> и посмотрите, что произойдет

5. @jwdwsn сравнивая источник 3D-перевернутых кругов и то, что вы опубликовали, совершенно очевидно, что атрибут «fc-wrapper» div был id удален. Это нарушает код. Используемый им селектор — «‘# fc-wrapper», что буквально означает «Элемент с идентификатором ‘fc-wrapper'», но он больше не существует.

Ответ №1:

Можете ли вы попробовать переместить следующий код в $(function

 $(".question").click(function() {
    $(this).next().fadeToggle("fast");
    $(this).children();
});
  

Ответ №2:

вы пытались переместить объявление javascript в HTML из jquery.hammer.js до того, как hammer.js ?

Комментарии:

1. Хьюго, только что попробовал это. Однако это не решило проблему.

Ответ №3:

Удалите $ из начала вашего IIFE (выражение функции, вызываемое немедленно) и добавьте открывающие и закрывающие скобки в конце.

 (function() {

    var $wrapper= $( '#fc-wrapper' ),
        $handle = $wrapper.children( 'div.fc-handle-pull' );

    $handle.on( 'click', function( event ) {

        ( $handle.data( 'opened' ) ) ? close() : open();

    } );

    $wrapper.hammer().bind( 'dragend', function( event ) {
        switch( event.direction ) {
            case 'right'    : open(); break;
            case 'left'     : close(); break;
        }
    });

    function open() {
        $wrapper.addClass( 'fc-wrapper-open' );
        $handle.data( 'opened', true );
    }

    function close() {
        $wrapper.removeClass( 'fc-wrapper-open' );
        $handle.data( 'opened', false );
    }

})();  

Комментарии:

1. Его использование — это просто псевдоним для DOM ready . Существует большая вероятность, что ваше изменение будет неудачным, поскольку DOM, вероятно, не загрузился бы при его оценке

2. Джон, к сожалению, у меня это не сработало. Тем не менее, спасибо за предложение.