0

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

我在 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>
4

1 回答 1

0

jQuery.noConflict();当您同时或在同一页面中使用(和加载)其他库时,应该使用它。

如果你使用noConflict,那么你必须在你的函数中使用相同的格式。

注意美元符号和 jQuery 单词之间的区别:

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

所以...对于您的代码,我将全部更改$jQuery单词,这必须足以毫无问题地工作。(然后,可以删除 noConflict) 当然,必须在文档准备好时调用(或至少推荐)jQuery 函数。


如果您想保留$别名,另一种选择是将 alljQuery替换为$sign 但替换noConflict call如下:

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

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

在这种情况下,$是 的别名jQuery,但请记住始终$在该函数内部使用。


最后,我在现实世界中的过期和最佳实践是使用allways jQuery这个词……那么在大多数情况下,没有必要在没有冲突的情况下战斗。(因为他们通常使用$符号)


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

祝你好运!

于 2013-06-27T12:38:38.553 回答