【发布时间】:2011-08-19 14:23:39
【问题描述】:
我使用的 WordPress 模板在主页上有一个 jQuery 轮播,在类别页面上有一些其他 jQuery 好东西(切换和滑块),它们都单独工作。我想在所有类别页面上复制滑块,但是当我添加它时,它会破坏两个 jQuery。有人可以给我一个关于如何让他们彼此相处融洽的建议吗?这是 2 个代码 sn-ps:
<script type="text/javascript">
// <![CDATA[
/* featured listings slider */
jQuery(document).ready(function($) {
$('.slider').jCarouselLite({
btnNext: '.next',
btnPrev: '.prev',
visible: 5,
hoverPause: true,
auto: 2800,
speed: 1100,
easing: 'easeOutQuint' // for different types of easing, see easing.js
});
});
// ]]>
</script>
和
<script type="text/javascript">
// <![CDATA[
// toggles the refine search field values
jQuery(document).ready(function($) {
$('div.handle').click(function() {
$(this).next('div.element').animate({
height: ['toggle', 'swing'],
opacity: 'toggle' }, 200
);
$(this).toggleClass('close', 'open');
return false;
});
<?php foreach ( $_POST as $field => $val ) : ?>
$('.<?php echo $field; ?> div.handle').toggleClass('close', 'open');
$('.<?php echo $field; ?> div.element').show();
<?php endforeach; ?>
});
// ]]>
</script>
...和
<script type="text/javascript">
// <![CDATA[
jQuery(document).ready(function($) {
$('#dist-slider').slider( {
range: 'min',
min: 0,
max: 3000,
value: <?php echo esc_js( isset( $_POST['distance'] ) ? intval( $_POST['distance'] ) : '50' ); ?>,
step: 5,
slide: function(event, ui) {
$('#distance').val(ui.value + ' <?php echo $distance_unit; ?>');
}
});
$('#distance').val($('#dist-slider').slider('value') + ' <?php echo $distance_unit; ?>');
});
// ]]>
</script>
...还有最后一个
<script type="text/javascript">
// <![CDATA[
jQuery(document).ready(function($) {
$('#slider-range').slider( {
range: true,
min: <?php echo esc_js( intval( $cp_min_price ) ); ?>,
max: <?php echo esc_js( intval( $cp_max_price ) ); ?>,
step: 1,
values: [ <?php echo esc_js( "{$amount[0]}, {$amount[1]}" ); ?> ],
slide: function(event, ui) {
<?php switch ( $cp_curr_symbol_pos ) {
case 'left' :
?>$('#amount').val('<?php echo $curr_symbol; ?>' + ui.values[0] + ' - <?php echo $curr_symbol; ?>' + ui.values[1]);<?php
break;
case 'left_space' :
?>$('#amount').val('<?php echo $curr_symbol; ?> ' + ui.values[0] + ' - <?php echo $curr_symbol; ?> ' + ui.values[1]);<?php
break;
case 'right' :
?>$('#amount').val(ui.values[0] + '<?php echo $curr_symbol; ?> - ' + ui.values[1] + '<?php echo $curr_symbol; ?>' );<?php
break;
case 'right_space' :
?>$('#amount').val(ui.values[0] + ' <?php echo $curr_symbol; ?> - ' + ui.values[1] + ' <?php echo $curr_symbol; ?>' );<?php
break;
} ?>
}
});
<?php switch ( $cp_curr_symbol_pos ) {
case 'left' :
?>$('#amount').val('<?php echo $curr_symbol; ?>' + $('#slider-range').slider('values', 0) + ' - <?php echo $curr_symbol; ?>' + $('#slider-range').slider('values', 1));<?php
break;
case 'left_space' :
?>$('#amount').val('<?php echo $curr_symbol; ?> ' + $('#slider-range').slider('values', 0) + ' - <?php echo $curr_symbol; ?> ' + $('#slider-range').slider('values', 1));<?php
break;
case 'right' :
?>$('#amount').val($('#slider-range').slider('values', 0) + '<?php echo $curr_symbol; ?> - ' + $('#slider-range').slider('values', 1) + '<?php echo $curr_symbol; ?>');<?php
break;
case 'right_space' :
?>$('#amount').val($('#slider-range').slider('values', 0) + ' <?php echo $curr_symbol; ?> - ' + $('#slider-range').slider('values', 1) + ' <?php echo $curr_symbol; ?>');<?php
break;
} ?>
});
// ]]>
</script>
最后三个都可以很好地协同工作,但是当我在同一页面上添加第一个时,它们都会中断。我尝试将jQuery(document).ready(function($) { 更改为$(document).ready(function() { 并将第二行$ 更改为jQuery 但这并没有解决任何问题。我还尝试将'.slider' 更改为'.somethingslider',因为我在下面看到.slider 的另一个实例,但这不起作用。非常感谢任何帮助!
【问题讨论】:
-
如果您遇到任何特定错误,最好知道它们是什么 - 例如,如果您打开错误控制台 / Firebug / Dragonfly / Developer Tools 等并查找 JavaScript 错误。
-
你确定在你的页面中加入了
jCarouselLite插件js吗? -
所以你有多个
ready处理程序但没有多个 jQuery 版本... -
如果将第一个 sn-p 中的 $(".slider") 替换为像 $("#firstslider") 这样的 ID 引用会怎样?
-
因为一切都可能使用相同的 jQuery 库,你被允许在任何地方使用
$。当您想同时使用另一个也需要使用$的 JavaScript 库时,您通常会调用noconflict模式并将$更改为jQuery。这似乎不是这里的情况。所有的 jQuery 插件应该相互配合。您包括 jCarousel Lite 吗?您在控制台中看到的错误是什么?此外,在进一步排除故障之前,请尝试将所有内容恢复到您开始的位置......您尝试的一些事情也可能会破坏这一点。
标签: jquery wordpress slider jcarousellite