javascript - 標籤技術,是怎麼實現的?

來源:互聯網
上載者:User
關鍵字 javascript html php 前台效果

後台是用ThinkPHP架構的,前台頁面呈現的Tag標籤技術,怎麼實現呢?
就比如segmentFault的這種標籤技術?
在“問題”這張表格裡有一個叫做tag的欄位?
怎麼實現像segmentFault的這種標籤效果呢?

更具體的問題在這裡:
https://segmentfault.com/q/1010000004909...

回複內容:

後台是用ThinkPHP架構的,前台頁面呈現的Tag標籤技術,怎麼實現呢?
就比如segmentFault的這種標籤技術?
在“問題”這張表格裡有一個叫做tag的欄位?
怎麼實現像segmentFault的這種標籤效果呢?

更具體的問題在這裡:
https://segmentfault.com/q/1010000004909...

使用select2、tag-it等等,我使用的是tag-it。
整個的流程大致是:在輸入框輸入字元的時候,會把當前的value值與資料庫中的資料對比(ajax請求,data參數就是當前的value值),看看是否有備選項,如下面這樣:

有的話,後台就返回相應的value和id,直接選中添加即可;
沒有的話就是新建立標籤:

sf的邏輯是這樣的:當你建立新標籤的時候,後台直接建立,然後返回相應的id值。它是把建立標籤作為了一個單獨的過程,和當前提問或發表文章並不是“100%掛鈎”,即當你建立一個新標籤之後,你又取消了相關的提問,這時雖然你沒有提問,但是你建立的標籤已經在資料庫中存在了,下次搜尋標籤時這個標籤已經作為備選項存在了。關於是在建立新標籤的時候就寫入到資料庫中還是在最後一步點擊“提交”時再寫入資料庫,Tag-it外掛程式的使用:如何傳遞額外資料給伺服器?,我在這個問題的答案最後簡單討論了一下,有興趣的可以看一下。

最後提交時,擷取每個標籤的id值,與問題的id值再關聯起來,就知道每個問題對應哪些標籤了。

問題表 標籤表 問題標籤關聯表
標籤應該還有一級二級之分吧 也就是每個標籤需要記錄它的父級標籤

樓上所述方法是利用傳統SQL來實現,我說一個利用NoSQL來實現的。

題主可以看一下這本書:

Redis入門指南

其中有一章講到了 利用Redis 來實現你描述的需求。

最後提交的時候,應該怎麼取得已選擇的標籤的內容呢?
我的意思是說,最後,已經選擇的標籤的內容,應該要記錄進資料庫吧,怎麼取出,已經選擇的標籤的列表呢?

嗯,主要的問題是,怎麼從隱藏欄位裡移除已經添加的tag

實現這樣的效果從代碼層方面,有兩種方法:
首先來說第一種,一開始就把所有的父類ID和子類ID標籤資料都讀取出來顯示在頁面上(利用CSS顯示、隱藏),然後jquery事件,click或者focus來切換選中的父類標籤,來展示父類標籤對應的子類標籤;這種方法顯示效果最快,但是一開始就讀取了資料,資料量大的時候對載入會有那麼一點點影響,但問題應該不是很大;

第二種就是,利用ajax的原理實現,實現局部重新整理,同樣的需要用到jquery事件,click或focus,選中時候獲得父類標籤ID,拿到ID用ajax傳遞到後台,從資料庫讀取資料返回前台,重新整理子標籤;這種即時顯示資料的效果擷取可能會差點,但避免了方法一的一開始就載入大量資料拖慢效率的缺點;

還有一種,利用緩衝

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.