Development Tip

jQuery로 HTML 주석 선택

yourdevel 2020. 11. 7. 10:33
반응형

jQuery로 HTML 주석 선택


누구든지 jQuery로 HTML 주석 노드를 선택하는 방법을 알고 있습니까?

<html>
<head>
    <title>Check Test</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <script type="text/javascript">
        $(function() {
            $("body *").each(function() {
                alert($(this).wrap("<span />").parent().html());
            });
        });
    </script>
</head>
<body>
    <!-- Hello -->  
    <p>
        <label for="thing">Thing Label</label>
        <input id="thing" type="checkbox" />
    </p>

이것은 주석을 선택하지 않습니다.


있다 jQuery를 코멘트 () 플러그인 당신을 위해 그렇게 할 것입니다. 용법:

var comments = $( "#foo" ).comments();
alert(comments.html());

이것은 당신이 찾고있는 것과 동등한 것을하는 것 같습니다.

    $(function() {
        $("body").contents().filter(function(){
            return this.nodeType == 8;
        }).each(function(i, e){
            alert(e.nodeValue);
        });
    });

플러그인을 원하지 않는 경우 :

var content = jQuery('body').html();
alert(content.match(/<!--.*?-->/g));

이것은 정규식을 사용합니다. 으로 둘러싸인 아무것도 검색으로 설정 <!--하고 -->그 안쪽에 쓰여 중요하지 않지만.

참고 : 그러나 jQuery가 주석을 반환하는지 확실하지 않습니다. 그렇지 않으면이 방법이 작동하지 않습니다.


다시 한 번, 게임에 늦었지만 최근에 직면 한 상황에서이 게시물이 도움이 되었기 때문에 다시 기여할 것이라고 생각했습니다.

우리의 맥락에서 우리는 광고를 렌더링하기 위해 코드 블록을 제공하는 광고 서비스를 가지고 있습니다.

각 광고에는 고유 한 '항공편 ID'가 있습니다. 동일한 250x300 사이드 레일 광고에 여러 비행이있을 수 있음을 의미합니다. 따라서 한 번의 인상에서 Subway, refresh 및 아마도 Quizno의 광고를 볼 수 있습니다.

안타깝게도이 서비스는이 항공편 ID를 주석으로 제공하며 데이터 속성과 같이 좀 더 유용한 것이 아닙니다. 즉, 각 댓글은 태그 내에 있습니다.

위에서이 솔루션을 조합하여 RegExp 개체의 JavaScript의 exec () 메서드를 활용하여 주석에서 비행 번호를 얻을 수있었습니다.

regexComment = new RegExp(/<!--\s*ad flight id:\s*([0-9]+)\s*-->/i);
targetElement = regexComment.exec($('div.advertisement').html());
if(targetElement.length > 0) {
    return parseInt(targetElement[1]);
}

다시 말하지만, 게임 후반에 죄송하지만이 문제에 대한 또 다른 접근 방식을 제공하는 것이 나쁘지 않을 것이라고 생각했습니다.

참고 URL : https://stackoverflow.com/questions/1623734/selecting-html-comments-with-jquery

반응형