2012-07-11 4 views
0

아래 코드로 jQuery 함수를 호출했습니다. 이 함수는 "QAList"의 "words :"영역에 표시된 단어를 검색 한 다음 해당 단어를 굵게 표시합니다. 이것은이 코드에서 잘 작동하고 있으며 "Demo"및 "or"는 굵게 표시되어 있습니다.레이블 내용을 함수에 전달하는 방법

$("[id$=QAList]").wrapInTag({ 
     words: ['Demo User', 'or'], 
     tag: '<selected>' 
    }); 

지금은 "단어를"통과하려고 목록을 라벨이나 텍스트 상자에서하지만 올바른 정보를 전달하는 얻을 수없는 어떤 이유로, 나는 그것이 무엇을보고 100 % 확실하지 않다 실제로 지나가고있다. 나는 lblSelectedQA 라벨에서 뽑아 코드를 변경하는 방법

은 다음과 같습니다

$("[id$=QAList]").wrapInTag({ 
     words: [$("[id$=lblSelectedQA]").html()], 
     tag: '<selected>' 
    }); 

심지어 라벨이 어떤 이유로 작동하지 않는 경우 텍스트 상자에서 그것을 시도 :

$("[id$=QAList]").wrapInTag({ 
     words: [$("[id$=lblSelectedQA]").val()], 
     tag: '<selected>' 
    }); 

내가 경고에 넣으면 라벨과 텍스트 상자에서 필요한 것을 얻습니다.

'데모 사용자'또는 '

다른 단어의 값을 전달하려고하는 "words :"뒤에 잘못된 구문이 있습니까?

감사합니다. 답변에 대한 응답으로

아래

** 응답 편집 iurisilvio 수의 대답은 내가 작은 따옴표 및 추가 공간을 제거 할 수있는 'Demo User', 'or' 텍스트를 채우는 무엇 모두 내 코드를 조금 변경되었습니다. 이제 다음과 같이 보입니다 : Demo User,or 그리고 단일 결과로 잘 작동합니다.

그런 다음 인덱스 [0] 또는 [1]을 추가해도 배열의 값 중 하나에 대해 작동하는 .split (",")을 추가하려고했지만 모든 배열 항목에 대해 단독으로 적용되지는 않습니다.

Utkanos는 기본적으로 동일한 것을 보여줍니다. 더 이상 필요하지 않은 공백과 작은 따옴표를 제거하는 방법을 추가하십시오. 이것은 하나의 결과를 작동하는 지금 내 코드입니다

:

$("[id$=QAList]").wrapInTag({ 
     words: [$("[id$=lblSelectedQA]").html().split(",")], 
     tag: '<selected>' 
    }); 

그러나 여러 결과를 반환 할 때 내가 인덱스를 추가하지 않으면 작동하지 않습니다,하지만 단지 인덱스에 대해 작동 할 수 I 하드 코드 ...이 배열에 얼마나 많은 문자가 있는지 모르기 때문에 옵션이 아닙니다.

$("[id$=QAList]").wrapInTag({ 
     words: [$("[id$=lblSelectedQA]").html().split(",")[0]], 
     tag: '<selected>' 
    }); 

또는

$("[id$=QAList]").wrapInTag({ 
     words: [$("[id$=lblSelectedQA]").html().split(",")[1]], 
     tag: '<selected>' 
    }); 

내가 그들을 통해 루프 필요없이 모든 배열 아이템을 얻을 수있는 방법이 있습니까?

감사합니다.

** 솔루션에 대한 편집 :

가 난 그냥 추가 된 것을 주위에 괄호를 삭제해야했습니다.나는 그것을 파악하고 돌아와서 Utkanos는 코드 작업 같은 일 :

을 게시했다 :

$("[id$=QAList]").wrapInTag({ 
     words: $("[id$=lblSelectedQA]").html().split(","), 
     tag: '<selected>' 
    }); 

감사합니다!

+0

이 'wrapInTag' 플러그인에 대한 링크를 제공 할 수 있습니까? 또는 당신이 직접 만든이 무엇입니까 – Ohgodwhy

+0

[link] http://stackoverflow.com/questions/9794851/find-text-string-in-jquery-and-make-it-bold/9795091#9795091 [/ link] – divtag

답변

1

words 매개 변수는 배열이어야합니다. 문자열 'Demo User', 'or'은 해당 값이 포함 된 배열의 인쇄물과 모양이 같지만 궁극적으로 배열이 아니라 문자열입니다.

즉, 실제 배열이 아닌 배열처럼 보이는 문자열을 전달합니다.

요소에서 가져 오는 문자열이 'Demo User', 'or'이라고 가정하면 구분 기호 (예 : 쉼표와 공백)를 분할하여 배열로 분할해야합니다. 또한 다양한 토큰을 중심으로 '을 삭제해야합니다.

$("[id$=QAList]").wrapInTag({ 
    words: $("[id$=lblSelectedQA]").val().replace(/'/g, '').split(, ?/), 
    tag: '<selected>' 
}); 
+0

감사합니다. 나는 너를 조금 더 여기에서 너가 여기에서하고있는 것을 본다. 그 따옴표와 여분의 공백을 없애기 위해 그 문자열이 어떻게 만들어 졌는지 제어 할 수 있습니다. 질문에 대한 편집 내용에 표시되는 모든 배열 항목을 보는 데 문제가 있습니다. – divtag

+1

편집을 보았습니다. 줄 바꿈 작은 따옴표를 제거해야하므로 split 만 사용하면 충분하지 않습니다. 편집에서 첫 번째 코드 단편이 작동하지 않는 또 다른 이유는 배열을 배열에 전달하기 때문입니다. 이는 배열을 플러그인으로 혼동시킬 수 있습니다. 그냥 대괄호로 묶지 않고 게시 한 코드 만 사용해보십시오. (내 대답도이 실수를 저질렀다는 것을 깨달았습니다, 지금 편집 됨). – Utkanos

+0

감사합니다. 나는 단지 초 전에 그것을 시험해 보았고 또한 그것을 발견했다 :) 고마워!! – divtag

2

이렇게하면 단어 var는 ["'Demo User', 'or'"] (한 요소)과 같습니다. 문자열을 분리하면 원하는 것을 얻을 수 있습니다.

// suposing your_text is right 
words: your_text.split(",") 

물론 단순화 된 솔루션입니다. 'word, 1', 'word 2'과 같은 것을 얻으려면 문제에 대한 더 나은 파서가 필요하지만 그 방법입니다.

+0

That 단어 앞에 공백을 남기고 주위에 작은 따옴표를 제거하지 않습니다. – Utkanos

+1

감사! 그게 내가 놓친 것입니다. 나는 그것이 하나의 요소라고 생각하지 않았습니다. 나는 또한이 방법으로 전달하면 작은 따옴표를 사용할 수 없다는 것을 발견했다. 나는 하나의 엘리먼트에 드롭하고 작은 따옴표를 버리면 가지고있는 방식대로 작동하는 바이올린을 가지고있다. 이제는 분할이 수행 할 것으로 생각하는 여러 값을 얻는 방법을 알아 내야합니다. – divtag

+1

알아요,하지만 OP 문제는 "문자열 대신 배열을 전달하는 것"입니다. 나는이 문제에 대한 해결책을 그에게 주었다. 이제 파서를 개선하여 그가 그런 식으로 분석하려고 시도 할 많은 다른 문제를 해결할 수 있습니다. – iurisilvio

관련 문제