채택완료

:contains 말고 일치하는 것만 구분하는 방법이 있을까요?

2021-03-25 (목) 10:23:22 4,278

:contains 말고 일치하는 것만 구분하는 방법이 있을까요?

다수의 a링크에 포함된 문자중

현재 보고있는 '페이지제목'을 포함하고 있는 a에

클래스명에 on를 주고자해서

$("a:contains('<?php echo $g5['title']; ?>')").addClass("on");

이렇게 했는데 

문제는

어떤페이지명이 '바나나'고 

다른페이지명이 '꿀바나나'

다른페이지명이 '바나나우유'

이런식이면

구분을 못하고 모두다 선택되어 버리는데

이럴경우 해결방법이 뭐가 있을까요????? ^^

|

답변 4개 / 댓글 4개

채택된 답변
+20 포인트

filter()로 해보았습니다

Copy
$('a').filter(function() {
    return $(this).text().indexOf("바나나") === 0;
}).css('color', 'red');

답변에 대한 댓글 1개

2021-03-25 (목) 11:48:17
앗 감사합니다. ^^ 잘됩니다.
Copy
$("li.depth2 a").filter(function() {
        return $(this).text() === "바나나";
    }).addClass("on");

답변에 대한 댓글 1개

2021-03-25 (목) 11:48:26
감사합니다.

아 ㅎㅎ 그럼 그냥 단순하게 

Copy
<li class="depth2"><a href="#" target="_self" <?php if(strpos($g5['title'], '바나나') !== false) { ?> class="on" <?php } ?>>바나나</a></li>

이렇게 하면 안되나요? ㅋㅋ 저기 바나나랑 꿀바나나가 변수에 담겨서 나오는게 아니라면 ㅎㅎ 

답변에 대한 댓글 1개

2021-03-25 (목) 11:48:36
감사합니다.

`indexOf` 함수를 활용하시는걸 추천합니다.

var title = "<?php echo $g5['title']?>";

if ($(this).parents("a").attr("href").indexOf(title) > -1)

   // 여기서 적용

};

답변에 대한 댓글 1개

2021-03-25 (목) 10:49:16
아 href의 포함된 값으로 구분하려는것은 아니구요
[code]
<li class="depth2"><a href="#" target="_self" class="on">바나나</a></li>
<li class="depth2"><a href="#" target="_self" class=" ">꿀바나나</a></li>
<li class="depth2"><a href="#" target="_self" class=" ">바나나우유</a></li>
[/code]
이런식입니다.
그래서 이것을
$("li.depth2 a:contains('<?php echo $g5['title']; ?>')").addClass("on");
이렇게 해놨습니다. ^^

답변을 작성하려면 로그인이 필요합니다.