2013-03-05 63 views
-1

我有一個小問題。我正在使用一個帶有JQuery插件JPList的谷歌地圖,該插件可以對一些結果進行一些過濾和排序。javascript問題可能衝突

如果我爲jplist插件刪除了一些jquery,則onclick方法在google地圖上工作,但只要我將jplist代碼放回到地圖中,click就停止工作。

我沒有得到JS錯誤,我真的很努力去達到它的底部。

什麼是最好的診斷方法?知道如何解決這個問題真的很有用。

感謝任何幫助。

感謝

var infowindow = new google.maps.InfoWindow(); 
     var myOptions = { 
      zoom: 4, 
      center: new google.maps.LatLng(-40.900557, 174.885971), 
      mapTypeId: google.maps.MapTypeId.ROADMAP, 
      disableDefaultUI: true 
     }; 
     var icon = "img/marker.png"; 
     var icons = { 
      'dflt': "img/marker.png", 
      'selected': "img/white-marker.png" 
     }; 
     var seletedMarker = null; 
     $(function() { 
      var map = new google.maps.Map(document.getElementById("map"), myOptions); 
      // grab data attributes from html 
      $('.row').each(function(index){ 
       var rLat = $(this).data("coordinates").lat; 
       var rLng = $(this).data("coordinates").lng; 
       var rTitle = $(this).find('.itemtitle a').html(); 
       var rTel = $(this).find('.tel').html(); 
       var rAdd = $(this).find('.add').html(); 
       var contentString = '<div style="text-align:left"><h4 style="color:#0068a6;font-size:16px;margin:0px 0px 10px 0px;">' + rTitle + '</h4><strong>' + rTel + '</strong><br /><br />' + rAdd + '</div>'; 
       var myLatLng = new google.maps.LatLng(rLat, rLng); 
       var otherMarkers = new google.maps.Marker({ 
        position: myLatLng, 
        map: map, 
        icon: icons.dflt, 
        title: rTitle 
       }); 
       // click actions 
       google.maps.event.addListener(otherMarkers, 'click', (function(otherMarkers, index) { 
        return function() { 
         if (seletedMarker) { 
          seletedMarker.setIcon(icons.dflt); //revert seletedMarker's icon to .dflt 
         } 
         infowindow.setContent(contentString); 
         otherMarkers.setIcon(icons.selected); //Set marker's icon to .seleted 
         infowindow.open(map, otherMarkers); 
         seletedMarker = otherMarkers; //Remember the currently selected marker so it can be reverted to default next time round. 
        } 
       })(otherMarkers, index)); 
       **/* this is what doesnt work */** 
       $(this).click(function(){ 
        google.maps.event.trigger(otherMarkers ,'click') 
       });  
      }); 
**/* this is what stops it working */** 
       $('#dynamiclist').jplist({ 
        items_box: '.results', 
        item_path: '.row', 
        panel_path: '.panel', 
        items_per_page: '4000', 
        //checkbox filters 
        control_types: { 
         'cb_filters': { 
          class_name: 'control_checkbox_filters' 
          ,options: {} 
         }, 
         'reset': { 
          class_name: 'control_reset' 
          ,options: {} 
         } 
        } 
       }); 
      }); 

理查德

+0

請顯示一些代碼,以便我們可以看到你在做什麼。否則,打開瀏覽器開發工具(F12)並使用JS控制檯。 – zzzzBov 2013-03-05 20:36:29

回答

0

的模式我經常看到的是,一個變量是由腳本重寫。

舉個例子,如果您加載了jQuery,那麼$設置

可以插件添加到jQuery的,然後你會看到$ .jqURI爲jqURI插件。

但它加載了一個已經有jQuery插件的腳本,它可能會完全重置$ variable或嵌套的屬性和方法。

我會檢查DOM選項卡中的Firebug,看看哪些屬性出現在所有腳本組合中(因此,如果您有腳本A和B,我將單獨檢查A,單獨檢查B,然後檢查A + B )。

在涉及jQuery的情況下,請查看jQuery文檔中的jQuery.noConflict。

0

你不能只是禁用此腳本的jQuery?這在任何地方都不需要。

+0

可悲的是,不是jplist插件使用jQuery庫 – user989952 2013-03-05 22:23:30

+0

如果它使用jQuery,那麼你的問題得到了回答。沒有衝突。問題必須是你的代碼。 – Rafe 2013-03-05 23:44:33