Конфликт скриптов
Добрый день!
Я пытаюсь сделать подсветку кода на сайте и горизонтальную прокрутку колёсиком мыши. По отдельности работают на ура, но при инициализации обоих скриптов одновременно, перестаёт работать горизонтальная прокрутка колёсиком мыши. Уже пытался и через noConflict — ни в какую... <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.2.0/styles/default.min.css"> <style> pre { width: 300px; overflow: auto; } </style> </head> <body> <pre class="color"><code class="PHP">function updateNumbers() { global $wpdb; $querystr = "SELECT $wpdb->posts.* FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' "; $pageposts = $wpdb->get_results($querystr, OBJECT); $counts = 0 ; if ($pageposts): foreach ($pageposts as $post): setup_postdata($post); $counts++; add_post_meta($post->ID, 'incr_number', $counts, true); update_post_meta($post->ID, 'incr_number', $counts); endforeach; endif; } add_action ( 'publish_post', 'updateNumbers' ); add_action ( 'deleted_post', 'updateNumbers' ); add_action ( 'edit_post', 'updateNumbers' );</code></pre> <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.2.0/highlight.min.js"></script> <script> // По отдельности работают на Ура, вместе — никак... // Активация горизонтальной прокрутки jQuery('pre') .data('scrollLeft', -1) .mousewheel(function(event, delta) { jQuery(this).data('scrollLeft', this.scrollLeft); this.scrollLeft -= (delta * 50); return false; }); // Активация подсветки кода hljs.initHighlightingOnLoad(); </script> </body> </html> |
snovapavel,
А если поменять местами инициализацию Подсветки и скроллинга ? |
Я не первый год замужем, и так, само-собой, уже пробовал ) Сейчас придёт товарищ «Рони» и покажет где я был неправ. Просто нужно подождать немного.
|
snovapavel,
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.2.0/styles/default.min.css"> <style> pre { width: 300px; overflow: auto; } </style> </head> <body> <pre class="color"><code class="PHP">function updateNumbers() { global $wpdb; $querystr = "SELECT $wpdb->posts.* FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' "; $pageposts = $wpdb->get_results($querystr, OBJECT); $counts = 0 ; if ($pageposts): foreach ($pageposts as $post): setup_postdata($post); $counts++; add_post_meta($post->ID, 'incr_number', $counts, true); update_post_meta($post->ID, 'incr_number', $counts); endforeach; endif; } add_action ( 'publish_post', 'updateNumbers' ); add_action ( 'deleted_post', 'updateNumbers' ); add_action ( 'edit_post', 'updateNumbers' );</code></pre> <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.2.0/highlight.min.js"></script> <script> // По отдельности работают на Ура, вместе — никак... // Активация горизонтальной прокрутки jQuery('.PHP') .data('scrollLeft', -1) .mousewheel(function(event, delta) { var left = jQuery(this).data('scrollLeft'); left -= (delta*50); this.scrollLeft = left; jQuery(this).data('scrollLeft', left); return false; }); // Активация подсветки кода hljs.initHighlightingOnLoad(); </script> </body> </html> |
Вариант без jquery.mousewheel
snovapavel,
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.2.0/styles/default.min.css"> <style> pre { width: 300px; overflow: auto; } </style> </head> <body> <pre class="color"><code class="PHP">function updateNumbers() { global $wpdb; $querystr = "SELECT $wpdb->posts.* FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' "; $pageposts = $wpdb->get_results($querystr, OBJECT); $counts = 0 ; if ($pageposts): foreach ($pageposts as $post): setup_postdata($post); $counts++; add_post_meta($post->ID, 'incr_number', $counts, true); update_post_meta($post->ID, 'incr_number', $counts); endforeach; endif; } add_action ( 'publish_post', 'updateNumbers' ); add_action ( 'deleted_post', 'updateNumbers' ); add_action ( 'edit_post', 'updateNumbers' );</code></pre> <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.2.0/highlight.min.js"></script> <script> $(".PHP").on("mousewheel DOMMouseScroll", function(c) { c.preventDefault(); var a = $(this).scrollLeft(); a += -c.originalEvent.wheelDelta || c.originalEvent.detail*40; $(this).stop().animate({scrollLeft: a}, 600, "swing") }) hljs.initHighlightingOnLoad(); </script> </body> </html> |
Уважаемый Рони, а нельзя подружить именно мои скрипты? Дело в том, что моя прокрутка, привязана к тегу pre с классом .color, а не к тегу code. И работает она шустро и не тормозит. Помогите пожалуйста подружить мои скрипты...
|
snovapavel,
не понял |
Цитата:
|
Часовой пояс GMT +3, время: 19:49. |