2013-06-27 68 views
0

我正在使用下面的脚本来显示时间滑块。该脚本在除了主页以外的所有页面上都能正常工作,所以我认为它与某些内容相冲突。该网站在Magento中运行,我能想到的唯一区别是在主页上的一个称为flex-slider的模块。停止与滑块jQuery冲突

我在jQuery中添加了没有冲突,但时间滑块仍然不起作用。

<script type="text/javascript"> 
jQuery.noConflict(); 
jQuery(function() { 
    jQuery('#callback_selected').html("9 am"); 
    var select = jQuery("#callback"); 
    var slider = jQuery("<div id='slider'></div>").insertAfter(select).slider({ 
    min: 1, 
    max: 12, 
    range: "min", 
    value: 1, 
    step: .5, 
     slide: function (event, ui) { 
     $time_int = ui.value; 
     if (ui.value < 5) { 
      $time_int = $time_int + 8; 
      if ($time_int.toString().substr(-2) == '.5') $time_int = $time_int.toString().split('.')[0] + ":30"; 
      $time_selected = $time_int + " am"; 
     } else { 
      $time_int = $time_int - 4; 
      if ($time_int.toString().substr(-2) == '.5') $time_int = $time_int.toString().split('.')[0] + ":30"; 
      $time_selected = $time_int + " pm"; 
     } 
     jQuery('#callback_selected').html($time_selected); 
     jQuery("#time").val($time_selected); 
    } 
    }); 
}); 
</script> 
+2

然后用firefbug或在Chrome中检查确切的错误。 –

+0

检查重复引用jquery库。 – Constanta

回答

0

jQuery.noConflict();是supposse在同一时间或在同一页面,当你与(和负载)合作,用到其他库。

如果您使用noConflict那么您的必须在您的功能中使用相同的格式。

注beteewn DOLAR标志和jQuery词的区别:

jQuery.noConflict(); 
// Do something with jQuery 
jQuery("div p").hide(); 
// Do something with another library's $() 
$("content").style.display = 'none'; 

所以......你的代码,我会改变所有$jQuery字,这一点必须足够多,没有问题的工作。 (然后,可以删除noConflict) 当然,jQuery函数必须在文档准备好时调用(或至少推荐)。


,如果你想保持你的$别名另一种选择,是$标志全部更换jQuery但更换noConflict call这样的:

jQuery.noConflict(); 
(function($) { 
    $(function() { 
    // code using $ as alias to jQuery 
    }); 
})(jQuery); 

注意到美元在(function($){...

在这种情况下,$jQuery的别名,但请记得始终使用$里面的那个函数。


Finnally,我expirence和最佳实践在现实世界中,是使用八方通jQuery字...那么就没有必要在大多数情况下,没有冲突 战斗。 (因为它们通常使用$号)


更多的例子和说明:http://api.jquery.com/jQuery.noConflict/

祝你好运!