2013-03-24 58 views
0

我會開始說我除了編輯和查找腳本教程之外,幾乎沒有任何JavaScript經驗。我一直在我的網站上使用一個小留言箱腳本。由於添加了新的插件和腳本,我發現了一個問題。無法讓jQuery.noConflict正常工作

「吼吼箱」在一個文本文件中存儲大約10-15行文本,顯示它們並隨時更新(ajax樣式)並在15之後刪除。簡單的小腳本。

現在吼吼箱不再加載文本,只是顯示空白。我試圖利用jQuery.noConflict();選項,但無濟於事。它會加載盒子,但是當提交時(發佈數據)(不涉及SQL)沒有任何反應。如果我刷新,但它會顯示在框中。所以我知道它與現場傳遞數據有關。

這裏是腳本(不是大)

<script type="text/javascript"> 
    var count = 0; 
    var files = 'application/widgets/nipunashoutbox/demos/jquery-shoutbox/'; 
    var lastTime = 0; 

    function prepare(response) { 
     var d = new Date(); 
     count++; 
     d.setTime(response.time*1000); 
     var mytime = d.getHours()+':'+d.getMinutes(); 
     var string = '<div class="shoutbox-list" id="list-'+count+'">' 
      + '<span class="shoutbox-list-time">'+mytime+'</span>' 
      + '<span class="shoutbox-list-nick">'+response.nickname+':</span>' 
      + '<span class="shoutbox-list-message">'+response.message+'</span>' 
      +'</div>'; 

     return string; 
    } 

    function success(response, status) { 
     if(status == 'success') { 
     lastTime = response.time; 
     $('#daddy-shoutbox-response').html('<img src="'+files+'images/accept.png" />'); 
     $('#daddy-shoutbox-list').prepend(prepare(response)); 
     $('input[@name=message]').attr('value', '').focus(); 
     $('#list-'+count).fadeIn('slow'); 
     timeoutID = setTimeout(refresh, 3000); 
     } 
    } 

    function validate(formData, jqForm, options) { 
     for (var i=0; i < formData.length; i++) { 
      if (!formData[i].value) { 
       alert('Please fill in all the fields'); 
       $('input[@name='+formData[i].name+']').css('background', 'red'); 
       return false; 
      } 
     } 
     $('#daddy-shoutbox-response').html('<img src="'+files+'images/loader.gif" />'); 
     clearTimeout(timeoutID); 
    } 

    function refresh() { 
     $.getJSON(files+"daddy-shoutbox.php?action=view&time="+lastTime, function(json) { 
     if(json.length) { 
      for(i=0; i < json.length; i++) { 
      $('#daddy-shoutbox-list').prepend(prepare(json[i])); 
      $('#list-' + count).fadeIn('slow'); 
      } 
      var j = i-1; 
      lastTime = json[j].time; 
     } 
     //alert(lastTime); 
     }); 
     timeoutID = setTimeout(refresh, 3000); 
    } 

    // wait for the DOM to be loaded 
    $(document).ready(function() { 
     var options = { 
      dataType:  'json', 
      beforeSubmit: validate, 
      success:  success 
     }; 
     $('#daddy-shoutbox-form').ajaxForm(options); 
     timeoutID = setTimeout(refresh, 100); 
    }); 

我試圖在檢查出多個網站(包括計算器討論)後做什麼添加片斷noConflict.jQuery() ;在第一個腳本行之後。

然後慢慢用jQuery替換每個$,或者在將其分配給jQuery之後替換其他變量。我已經得到的最接近的是它會凍結加載更新,這或將推出一個新的頁面呼應:

{"response":"Good work","nickname":"myusername","message":".","time":1364101631} 

目前正在尋求幫助,因爲我很想有這個工作了。希望我已經能夠解釋,如果不是我道歉,請讓我知道我應該包括什麼。感謝您閱讀本文的時間,並感謝您的支持。

編輯

我道歉,我忘了,包括腳本被稱爲在標題:

<script type="text/javascript" src="application/widgets/nipunashoutbox/js/jquery.js"></script> 
    <script type="text/javascript" src="application/widgets/nipunashoutbox/js/jquery.form.js"></script> 

回答

1

您需要設置jQuery.noConflict();等於一個變量。從那裏你可以取代它。凡曾經你的聊天框是叫你可以這樣做:

var j = jQuery.noConflict(); 
j(document).ready(function() { 
    console.log('jQuery is loaded'); // lets you know jQuery has loaded 
} 

所以你的情況:

<script type="text/javascript"> 
    var j = jQuery.noConflict(); 
    var count = 0; 
    var files = 'application/widgets/nipunashoutbox/demos/jquery-shoutbox/'; 
    // omitting some code... 
    function success(response, status) { 
     if(status == 'success') { 
      lastTime = response.time; 
      j('#daddy-shoutbox-response').html('<img src="'+files+'images/accept.png" />'); 
      j('#daddy-shoutbox-list').prepend(prepare(response)); 
      j('input[@name=message]').attr('value', '').focus(); 
      j('#list-'+count).fadeIn('slow'); 
      timeoutID = setTimeout(refresh, 3000); 
     } 
    } 

    // omitting more code... 
</script> 

您需要使用我上面介紹的方法$每個實例,以取代以j。 希望這有助於! Here is a working demo!

+0

嗨,感謝您的回覆,我試着嘗試一下您的方法,並在實施後出於某種原因,聊天框不再顯示消息。如果您輸入了任何內容並點擊提交,當然會加載一個新的頁面,以及您輸入的文本(全部在{}的內容)中回顯「成功」功能。 我在Firefox中檢出了錯誤控制檯,但我得到一個 「TypeError:j不是一個函數」,並且它在錯誤列表上每秒都會重複一次。 我檢查了它指的代碼 j('#daddy-shoutbox-list')。prepend(準備(json [i]));' – user2203886 2013-03-24 18:10:47

+0

再次查看腳本後,我注意到在某個點j被稱爲另一個函數的變量。所以我把「j」改爲「m」,現在聊天加載起來。現在唯一的問題是,當我點擊提交時,只有加載欄坐在那裏沒有任何反應。 如果我點擊刷新,雖然有新的迴應。任何建議,我應該看看爲什麼它無法完全處理刷新?再次,我非常感謝你的幫助。 – user2203886 2013-03-24 18:27:04

+0

編輯 我能夠捕捉此在錯誤控制檯 '代碼時間戳:2013年3月24日上午11點31分37秒 錯誤:錯誤:語法錯誤,不能識別的表達式:輸入[@名稱=郵件] 源文件:/application/modules/Photoviewer/externals/scripts/jquery-1.9.0.min.js?c=81 行:2' 這是否意味着我聲明的變量現在搞亂了另一個腳本?如果這聽起來像我至少在滾動 編輯,改變變量仍然產生相同的錯誤。看看引用腳本,看看是什麼被調用。 – user2203886 2013-03-24 18:35:17