2017-06-15 35 views
0

我正在Django中使用希臘和拉丁文本數據庫的Web開發項目。這是由多個人工作,但我正在接受這個項目。儘管我在Django和Javascript中有入門經驗,雖然我已經能夠學習很多新東西,但我仍然有這樣的問題。(Django/Javascript/SQLite3):這個「class * =」選擇器是如何工作的?它做什麼

所以看看我們的main.js文件中的這些代碼行。

// Hide all text/book elements NOT part of the selected language: 
books.not("[class*='" + lang + "']").css("display", "none"); 
// Show all which are part of the selected language: 
books.filter("[class*='" + lang + "']").css("display", "block"); 
//What if I had a function that took books as an arg, and then app 

說實話,我不知道是什麼語法與術語, "[class*=]"發生。但是,我已經瞭解了.filter()和.not()方法以及.css()方法。

但是,這兩行代碼似乎完成了一些重要的事情。他們能夠確定哪些書籍對象使用lang變量(這是一個字符串)指定的語言。 display:nonedisplay:block在必要時應用。

我只是找不到任何有關這個選擇器是什麼的文檔,或者它是如何工作的。同樣,我不熟悉JavaScript的所有同事都會立即被這個選擇器使用術語「class」的事實拋棄。他們認爲這是指具有與lang指定的字符串相同的類的html元素(即class =「greek」)。但沒有「希臘」班。

我唯一的猜測是,這個語法允許我們訪問數據庫並檢查哪些記錄(或書籍對象)的字段或列設置爲「lang」。這將是一個有用的選擇器,可以讓Javascript查詢我的數據庫,以查找書籍類型,日期等其他內容......所以我需要知道發生了什麼。任何輕微的解釋都會有幫助。如果你的文檔的鏈接無論多麼基本的,如果你覺得它會幫助我在Javascript和Django的一個更好的基礎,請發送。

回答

0

它的一個css selector,在這個例子中是一個屬性選擇器,它查找一個名爲class的屬性,它包含希臘語的子字符串。

https://drafts.csswg.org/selectors-3/#selectors

E [富* = 「酒吧」]的E元素 「foo」 的屬性值包含 子 「酒吧」

的代碼

所以你看,當lang通過.not()行隱藏任何不包含greek的元素。下一行顯示其中有greek的所有元素。

如果目前沒有元素與class=greek代碼是動態的沒有關係。意思,而不是硬編碼,例如希臘語,你可以通過希臘語在朗,只有這將顯示。或者,如果說你將其更改爲英國,將顯示英國唯一的元素,而無需改變實際的js代碼。

+0

說實話我有點困惑的最後兩句,因爲如果你的意思是「在朗通希臘語,」嗯......郎是一個字符串變量,所以我知道我可以通過一個被稱爲「希臘」或字符串「拉丁語「。 –

+0

Lang是根據有人點擊希臘或拉丁文的按鈕來聲明的。我不想問你關於JavaScript語法的問題,但在這裏。 –

+0

例如:當有人點擊該按鈕拉丁文: '$( 「#拉丁文」)。on(「click」,{ language:「latin」 },configureForm);' 'function configureForm(e){var lang = e.data.language; ....}' 我一直對e.data有點困惑,但是......我想我明白髮生了什麼,並且已經向其他人解釋過了。 –

相關問題