2011-04-28 42 views
0

我正在處理CMS,並一直在尋找合適的Jquery/Php圖像管理器,但找不到任何真正適合我需求的東西。所以我決定自己去建立圖像管理器。壞消息是我對Jquery的速度並不特別感興趣......其實我知道的很少。但我正在努力通過它。Jquery PHP/Mysql圖像管理器

最終結果將顯示圖像的無序列表。

<ul> 
<li><a href="#" id="imgid"><img src="imgsrc" /></a></li> 
<ul> 

當用戶點擊圖像時,該圖像的ID被髮送到Jquery函數並存儲在一個數組中。該圖像通過addclass()添加的邊框突出顯示。如果用戶點擊後續圖像,圖像ID也會發送到Jquery數組,並且第二個圖像也會高亮顯示。

這一直持續到用戶不點擊任何其他圖像。當然,如果用戶點擊已經包含在Jquery數組中的圖像,那麼它將被刪除,並且高亮效果也會被刪除。

接下來,用戶將從位於圖像列表下方的選擇菜單中選擇一個目錄項目。該項目的ID也傳遞給Jquery。

當用戶點擊提交時,Jquery數組和選擇ID被髮送到一個更新MySQL表的PHP腳本,將圖像ID鏈接到目錄項ID。

我到目前爲止是...我有一個可愛的無序圖像列表。

我的問題是

  1. 如何將圖像ID發送到jQuery的陣列,並隨後刪除ID,如果相同的圖像再次單擊
  2. 如何Jquery的數組發送到PHP要執行的腳本

我目前在代碼片段中有一些工作,但由於jquery遠離我的工作,我只是漂洗和重複,直到我得到正確的代碼。任何幫助都會很棒。

馬克

所以我一直想這個代碼片段,但我覺得我可以寫更好。

$(document).ready(function() { 
    $("img").click(function(event) { 
     var test = (event.target.id); 
     if($('img[id=' + test + ']').is('.error')) 
      $('img[id=' + test + ']').removeClass("error"); 
     else 
      $('img[id=' + test + ']').addClass("error"); 
    }); 
}); 
</script> 

肯定有另一種方式來定位的IMG ID,而不必使用 'IMG [ID =' +測試+ ']'

馬克

再次編輯

$(document).ready(function() { 
    $("img").click(function(event) { 
     var img_id = (event.target.id); 
     var imgArray = new Array(); 
     if($('img[id=' + img_id + ']').is('.selected')) { 
      $('img[id=' + img_id + ']').removeClass("selected"); 
      $('span[id=check_' + img_id + ']').removeClass("check-ok"); 
      removeArray(); 
      } 
     else { 
      $('img[id=' + img_id + ']').addClass("selected"); 
      $('span[id=check_' + img_id + ']').addClass("check-ok"); 
      addArray(); 
      } 
     function removeArray() { 
      alert('Removing from the array'); 
      } 
     function addArray() { 
      alert('Adding into the array'); 
      } 
     }); 
    }); 

試圖找出如何將圖像插入到數組中,然後將它們從數組中移除。

+1

研究'Toggle'和'Ajax'函數的JQuery文檔將是一個很好的開始。 – Cups 2011-04-28 10:14:01

回答

0

我真的不知道你的代碼的所有位都在做,但這樣的事情至少應該使其更有點幹:

function showMessage(selected) { 
    if(true === selected) 
     { 
     alert('Removing from the array'); 
     } 
    else 
     { 
     alert('Adding to the array'); 
     } 
} 

$(document).ready(function() { 
    $('img').click(function(event, ui) 
     { 
     $(this).toggleClass('selected'); 
     var id = $(this).attr('id'); 
     $('#check_' + id).toggleClass('check-ok'); 
     showMessage($(this).hasClass('selected')); 
     }); 
}); 

而且在jsfiddle(雖然我換成與IMG速度的div)。

+0

感謝您的幫助。主要問題實際上是數組部分...將值放入數組中。 – 2011-05-03 10:24:30

+0

@Mark如果它只是一個DOM變量沒有變化的數組,那麼你可以使用'.data()'函數。但是,如果DOM發生變化,那麼最好有一個函數處理HTML的變化,另一個函數讀取HTML並從中構建jQuery數組。 – 2011-05-03 10:28:43