2013-06-27 64 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/

祝你好運!