복붙노트

[JQUERY] 어떻게 특정 단어의 모든 인스턴스의 / 스타일 / 부품에 jQuery를 사용할 수 있습니까?

JQUERY

어떻게 특정 단어의 모든 인스턴스의 / 스타일 / 부품에 jQuery를 사용할 수 있습니까?

해결법


  1. 1.이를 위해 안정적으로 당신은 텍스트 노드를 찾고, 그 텍스트 검색 문서의 각 요소를 반복해야 할 것이다. (이 플러그인이 문제는 않습니다에서 언급 한 것입니다.)

    이를 위해 안정적으로 당신은 텍스트 노드를 찾고, 그 텍스트 검색 문서의 각 요소를 반복해야 할 것이다. (이 플러그인이 문제는 않습니다에서 언급 한 것입니다.)

    다음은 정규식 패턴이 일치 할 수있는 일반 자바 스크립트 / DOM 하나입니다. 선택기는 요소를 선택할 수 있기 때문에 jQuery를 정말 여기 당신에게 많은 도움을 제공하지 않으며, '포함'선택은 그렇게하지 우리에게 너무 유용 재귀입니다.

    // Find text in descendents of an element, in reverse document order
    // pattern must be a regexp with global flag
    //
    function findText(element, pattern, callback) {
        for (var childi= element.childNodes.length; childi-->0;) {
            var child= element.childNodes[childi];
            if (child.nodeType==1) {
                findText(child, pattern, callback);
            } else if (child.nodeType==3) {
                var matches= [];
                var match;
                while (match= pattern.exec(child.data))
                    matches.push(match);
                for (var i= matches.length; i-->0;)
                    callback.call(window, child, matches[i]);
            }
        }
    }
    
    findText(document.body, /\bBuyNow\b/g, function(node, match) {
        var span= document.createElement('span');
        span.className= 'highlight';
        node.splitText(match.index+6);
        span.appendChild(node.splitText(match.index+3));
        node.parentNode.insertBefore(span, node.nextSibling);
    });
    

  2. 2.정규 표현식과 마음에 대한 대체 () 봄. 같은 뭔가

    정규 표현식과 마음에 대한 대체 () 봄. 같은 뭔가

    var text = $([selector]).html();
    text = text.replace(/Now/g,'<strong>Now<\strong>');
    $([selector]).html(text);
    

    HTML 사용에주의의 단어 ()이 작업을 수행합니다. 첫째, href가 다음 잘못 함수에 페이지를 일으킬 수 요소와 다른 속성의 속성에 일치하는 문자열을 대체 할 수있는 가능성이있다. 잠재적 인 문제들을 극복하기 위해 더 나은 정규 표현식을 쓸 수있을 수도 있지만, 성능 (I 더 정규식 전문가는 아니지만) 저하 될 수 있습니다. 둘째, 콘텐츠 교체 HTML ()을 사용하여 이러한 구성 요소에 바인딩 이벤트 핸들러 비 직렬화 된 데이터가 소실되는 등, 그 교체 폼 데이터를 마크 업 발생할 것이다. 더 나은 / 안전 옵션이 될 수 있습니다 만 텍스트 노드를 대상으로하는 기능을 작성, 그냥 페이지가 얼마나 복잡한에 따라 달라집니다.

    당신이 HMTL 파일에 액세스 할 수있는 경우, 아마 발견을하고는 내용이 정적 인 경우 파일의 모양을 변경하고자하는 단어를 대체하기 위해 더 좋을 것이다. 메모장 ++의 파일 옵션에서 대부분의 경우이 작업 성능이 좋은입니다 찾을 수 있습니다.

    CSS 클래스와 SINGLESHOT의 제안에가는과 <스팬>를 사용하는 것은의 요소를 사용하는 것보다 더 많은 유연성을 줄 것입니다.


  3. 3.난 그냥 그렇게 약간의 플러그인을 썼다. 비슷한 질문에 대한 내 대답을 살펴보십시오.

    난 그냥 그렇게 약간의 플러그인을 썼다. 비슷한 질문에 대한 내 대답을 살펴보십시오.

    그것은 훨씬 빨리이다 - 대신 허용 대답에 제안 된 플러그인을 다운로드하는, 나는 강하게 당신은 내가 작성한 플러그인을 사용하는 것이 좋습니다.


  4. 4.

    var Run=Run || {};
    
    Run.makestrong= function(hoo, Rx){
     if(hoo.data){
      var X= document.createElement('strong');
      X.style.color= 'red'; // testing only, easier to spot changes
      var pa= hoo.parentNode;
      var res, el, tem;
      var str= hoo.data;
      while(str && (res= Rx.exec(str))!= null){
       var tem= res[1];
       el= X.cloneNode(true);
       el.appendChild(document.createTextNode(tem));
       hoo.replaceData(res.index, tem.length,'');
       hoo= hoo.splitText(res.index);
       str= hoo.data;
       if(str) pa.insertBefore(el, hoo);
       else{
        pa.appendChild(el);
        return;
       }
      }
     }
    }
    
    Run.godeep= function(hoo, fun, arg){
     var A= [];
     if(hoo){
      hoo= hoo.firstChild;
      while(hoo!= null){
       if(hoo.nodeType== 3){
        if(hoo.data) A[A.length]= fun(hoo, arg);
       }
       else A= A.concat(arguments.callee(hoo, fun, arg));
       hoo= hoo.nextSibling;
      }
     }
     return A;
    }
    
    //test
    
    **Run.godeep(document.body, Run.makestrong,/([Ee]+)/g);**
    

  5. 5.이것은 jQuery를 스크립트가 아니라 순수 자바 스크립트, 나는 그것을 조금 변경 될 수 있다고 생각합니다. 링크.

    이것은 jQuery를 스크립트가 아니라 순수 자바 스크립트, 나는 그것을 조금 변경 될 수 있다고 생각합니다. 링크.

  6. from https://stackoverflow.com/questions/1501007/how-can-i-use-jquery-to-style-parts-of-all-instances-of-a-specific-word by cc-by-sa and MIT license