히야! 나는 스크립트를 다시 작성 결국,하지만 당신은
/* Return a unique array */
Array.prototype.getUnique = function(){
var u = {}, a = [], i, l;
for(i = 0, l = this.length; i < l; ++i){
if(this[i] in u) continue;
a.push(this[i]);
u[this[i]] = 1;
}
return a;
}
/* Show paragraph containing first letter (or number if zero) */
function finish(letter){
var t, txt, found = [];
if (letter.match(/\d/)) { letter = "0"; } // set letter to zero if it is any number
$('p').each(function(){
// grab first 20 characters so we don't need to split the entire paragraph
txt = $(this).text().substr(0,20).split(' ');
if (txt[0].toLowerCase() == 'the') { txt.shift(); } // remove first element if it's "the"
t = txt[0].match(/\d/) ? "0" : txt[0].substr(0,1).toLowerCase(); // set zero for digits or get first letter
found.push(t); // Add letter/number to array
if ((t == "0" && letter == "0") || t == letter.substr(0,1).toLowerCase()){ // show paragraph
$(this).addClass('current-series').show();
} else {
$(this).hide();
}
})
return found.getUnique().sort();
}
업데이트 :)에 대한 작업 demo을했다 : 좋아, 나는 마침내 당신이 통합에 의해 무슨 뜻인지 이해! 예! 고유 한 항목 만 표시되도록하려는 것입니다. 내가 updated the demo했습니다 나는 또한 URL에서 문자 변수를 잡고 작은 스크립트를 추가 한, 그래서 당신은 정말이 PHP를 사용할 필요가 없습니다 : 데모에
참고, 나는 제거했다 선택 목록은,하지만 당신은이 줄을 수정하여 (단지 데모) 선택된 문자를 변경할 수 있습니다 다음 '0'
당신이 (데모 전용) 표시 원하는 문자로
var letter = getletter() || '0';
변경합니다. 라이브 버전에서는 자동으로 URL에서 문자를 가져옵니다.
/* get letter from URL */
function getletter(){
var p = (new RegExp("[\\?&]letter=([^&#]*)")).exec(window.location.href);
return (p===null) ? "" : p[1];
}
/* Show paragraph containing first letter (or number if zero) */
function finish(){
var t, txt, found = [];
// get letter from url or set to zero if it doesn't exist
var letter = getletter() || '0';
// set letter to zero if it is any number
if (letter.match(/\d/)) { letter = "0"; }
$('p').each(function(){
// grab first 20 characters so we don't need to split the entire paragraph
txt = $(this).text().substr(0,20).split(' ');
// remove first element if it's "the"
if (txt[0].toLowerCase() == 'the') { txt.shift(); }
t = txt[0].match(/\d/) ? "0" : txt[0].substr(0,1).toLowerCase(); // set zero for digits or get first letter
// show paragraph if unique and matches letter
if ((found[$(this).text()] != true) && ((t == "0" && letter == "0") || t == letter.substr(0,1).toLowerCase())){
$(this).addClass('current-series').show();
found[$(this).text()] = true;
} else {
$(this).hide();
}
})
}
@Fudgey - 정말 멋지지만, URL 문자열에서 'letter'변수를 가져 오지 않는 것 같습니다. 생각? – Batfan
스크립트로 약간 놀고 변경했습니다 - function finish (letter) {- to - function finish() {- 이제 URL 문자열에서 변수를 선택합니다. 그러나 목록을 통합하지 않으므로 고유 항목 만 표시됩니다. : P – Batfan
통합 목록 작성 방법에 대한 코드가 명확하지 않으므로 필자는'finish' 함수를 사용하여 목록을 배열로 반환했습니다. 데모를 보면'var f = finish (letter);'f가이리스트를 포함하고있는 것을 볼 수있을 것이다. 나는 당신이 그 코드의 조금을 제공하면 더 당신을 도울 수 있었다. – Mottie