2011-10-17 21 views
0

我有一個奇怪的JS問題。奇怪的JS問題

我已經構建了一個內容管理系統。在舊版本中一切運行良好。改變了一下設計,實現了jquery ui主題,並將jquery升級到最新版本。現在,#menu選擇框的更改事件根本不起作用。在螢火蟲上也沒有錯誤。以下屏幕截圖取自Visual event結果。

舊版本。正如你看到有變化的事件#menu選擇框

enter image description here

而且新版本。標題上的奇怪點擊事件從無處出現。並且對於#menu選擇框沒有改變事件

enter image description here

HTML標記看起來像

... 
      <select name="menu" id="menu"> 
       <option value="" selected="selected">Select One</option> 
       <option value="1">sample 1</option> 
       <option value="2">sample 2/option> 
      </select> 
... 

的JS端(pgsettings.js)

$(document).ready(function() { 
    $("#parent").hide(); 
    $("#options").hide(); 
    $("input:submit").button(); 
    $('#menu').selectmenu(); 
    $("#options").buttonset(); 
    $("#menu").change(function() { 
     var selectedmenu = $(this).val(); 
     if (selectedmenu != '' && selectedmenu != '0') { 
      var parentcheck = $(".parentcheck:checked").val(); 

      $("#options").show(); 
      if (parentcheck === "1") { 
       genOpts(selectedmenu); 
      } 
     } 
     else { 
      $("#options").hide(); 
      $("#parent").combobox("destroy"); 
      $("#parent").hide().find('option:selected').removeAttr('selected'); 
      $(".parentcheck").removeAttr("checked").button("refresh"); 

     } 
    }); 


    $(".parentcheck").change(function() { 
     var selectedmenu = $("#menu").val(); 
     if ($(this).val() === "0") { 
      $("#parent").combobox("destroy"); 
      $("#parent").hide().find('option:selected').removeAttr('selected');   
      $("#menu").change(); 
     } 
     if ($(this).val() === "1") { 
      $("#parent").combobox("destroy"); 
      $("#menu").change(); 
     } 
    }); 
}); 

我真的找不到我做錯了什麼。也許我把所有的jscript文件放在文件的末尾?整個html標記爲new versionold version如果有人想看看我的問題,我可以給我的teamviewer id。 (我建議這樣做,因爲我沒有該網站的網址來顯示問題的實際行動,我只能與您分享本地網站)

+0

161行是'form>',不應該是''?可能不會對您的問題負責,但值得修復。在一些瀏覽器中,不正確地關閉元素會導致非常奇怪和難以診斷問題。另外,如果你想給我發送頁面鏈接,我很樂意仔細看看。 –

+0

你有任何IM嗎? Skype或什麼? – heron

+0

我只能通過Teamviewer向你展示。與我分享你的即時通訊,所以我可以與你聯繫 – heron

回答

2

selectmenu插件干擾您的原始代碼。您將需要綁定到插件本身的更改事件,而不是選擇。查看selectmenu插件的api,獲取有關如何綁定到其更改事件的說明。

編輯:我們在聊天室裏討論過這個問題,結果成了重複的id。

+0

什麼改變,我的js不是很好。我在這一點上很努力 – heron

+0

你正在使用什麼selectmenu插件? –

+0

@DEVastator將函數從$('#menu')。change()'移動到'$('#menu')。selectbox({change:// change event here}) –

0

我給你一個建議。

您不使用局部變量的一切,這會減慢你的代碼

例如:

$(document).ready(function() { 
    $("#parent").hide(); 

$(document).ready(function() { 
    var parent = $("#parent"); 
    parent.hide(); 

所以其他地方一樣在您撥打$("#parent")即可撥打parent

想一想,每次你用jQuery選擇#parent時,你正在運行那個選擇器引擎的魔法,如果你把它作爲局部變量存儲,你只需要選擇一個元素。

+0

好吧。但這不是解決方案。你能通過teamviewer看看嗎? – heron