2011-09-13 81 views
0

我正在編寫一個網頁,其中包含一個允許用戶選擇圖庫以將圖像與圖像關聯的字段。有些選項卡可以突出顯示,而另一個頁面上的php腳本正在加載可用庫,但是我遇到的問題是,首先按鈕僅在第二次點擊後切換,這很奇怪,第二個我遇到的問題是,我不知道如何一次只切換一個按鈕,所以基本上我只想讓一個畫廊一次關聯,所以我不想讓多個畫廊在同時。我很堅持,所以任何幫助將不勝感激。我使用jQuery作爲JavaScript框架。底部附近的功能並不完全相關,但我想我會包括它們。第一次點擊時不會跳轉的功能

var from_post = false; 
    var addOrRemove = true; 

    $(document).ready(function() { 

      $("#gallery").load('http://localhost/index.php/site/gallerys_avalible/ #gallerys_avalible', function() { 
      $('li').click(function(e) { 

      // console.log($('li').index((this))); 


      // e.preventDefault(); 

       $(this).toggle(
       function(){ 
        $(this).css('background-color', '#CC0000'); 
        console.log('backgroudn red'); 
       }, 
       function(){ 
        $(this).css('background-color', '#00A8F0'); 
          console.log('backgroudn blue'); 
       }); 


       return false; 
       }); 

      }); 

      /* $('li').live('click', function(e) { 

      }); 
     */ 
      $('#addNew').click(function() { 
       console.log('i got called'); 
       $('#new_form').fadeIn(1000); 
      }); 

      $('form').submit(function() { 

       if(from_post) { 
        //submit form 

        return true; 

       } else { 

        //dont submit form. 
        return false; 

       } 
      }); 

     }); 

謝謝誰花時間幫助我這個任何一個。

回答

1

你有太多的功能在進行。

對於第二個問題:

document.onLoad(function(){ 
    $("#gallery").load('http://…'); 
    $("#gallery > li").toggle(function(){ 
     function(){$(this).css('background-color', '#CC0000');}, 
     function(){$(this).css('background-color', 'ORIGINAL_COLOUR');} 
    }); 
}); 

它可能是更好的添加/刪除,而不是應用CSS類。要做到這一點:

document.onLoad(function(){ 
    $("#gallery").load('http://…'); 
    $("#gallery > li").click(function(){ 
     $("#gallery > li").toggleClass("active"); 
     //this will add .active if it's not there, or remove it if it's already there 
    }); 
}); 

這也會照顧到任何點擊問題。

此外,還有jQuery :not()選擇器,如果你想選擇其他的東西。

+0

嘿非常感謝你的迴應!說到jquery,我仍然是一個noob。 –

+0

np。我在一分鐘前修改了我的答案的第一部分代碼(我誤解了你最初嘗試這樣做的方式,但以前的方法也適用)。沒有特別的理由,我是'不'的忠實粉絲。 – jacob

+1

嘿,我決定去用你的舊功能之一,我不得不修改它,但它工作得很好。非常感謝。對於遇到同樣問題的任何人,這裏是修改過的代碼。 ('li')。點擊(功能(){(this).css('background-color','#CC0000'); $('li')。 .css('background-color','#00A8F0'); return false; }); 順便說一句,非功能或選擇器很棒,謝謝你告訴我。 :) –

1

您使用切換的方式,它不需要被封裝在.click綁定中。這是事件本身。

此代碼:

$('li').toggle(
function(){ 
    $(this).css('background-color', 'red'); 
}, 
function(){ 
    $(this).css('background-color', 'blue'); 
}); 

http://jsfiddle.net/MRNwT/1/

另外,我不認爲切換是你想要的呢。你想要忽略所有的東西,然後重新點亮被點擊的項目。

+0

非常感謝您的寶貴時間,在回答這個問題。 :) –

1

你爲什麼不乾脆用.toggle

$('li').toggle(function() {   

       function(){ 
        $(this).css('background-color', '#CC0000'); 
        console.log('backgroudn red'); 
       }, 
       function(){ 
        $(this).css('background-color', '#00A8F0'); 
          console.log('backgroudn blue'); 
       }); 
+0

非常感謝你花時間回答我的問題。 :)我有另一個問題,我試圖實現你的功能,但我不斷收到一個錯誤,說該函數後的逗號是無法理解的,你知道爲什麼可能嗎? –

相關問題