2011-10-20 2 views
0

내 콘텐츠 페이지 안에는 lable과 함께 여러 컨트롤이 포함 된 리피터 컨트롤이 있습니다. lable의 이드는 "LEmptyComments"입니다. 내 요구 사항은 레이블의 클래스 이름이 비어 있는지 확인하는 것입니다. If 블럭은 내가 무엇을 잘못하고 있는지를 결코 실행하지 않는다?jQuery를 사용하여 aspx 레이블의 클래스를 확인하십시오

<span id="MainContent_DlReviewImages_LEmptyComments_13" class="error">...... </span> 
+0

선택기 ('$ [ "label [id * = 'LEmptyComments']")')가 결과를 반환합니까? 그렇다면 ASPX 페이지의 소스를 보았습니까? 소스를 보는 것이 독자적으로 문제를 찾는 데 도움이되지 않는다면 ASPX 페이지에서 생성 된 HTML 코드를 게시하는 것이 좋습니다. –

+0

@KileyNaro, 선택기가 결과를 반환하지 않는 것 같습니다. – BumbleBee

답변

1

className은 유효한 jQuery 함수 또는 속성이 아니지만 jQuery 객체에서 호출합니다. 또한 label의 전체를 반복하고하지 span들 :

function chkCmnts() { 
    return $("span[id*='LEmptyComments'][class!='']").length > 0 ? 0 : 1; 
} 

:

function chkCmnts() { 
    var val = 1; 
    $("span[id*='LEmptyComments']").each(function() { 
     if (this.className) { // "" is falsey 
      val = 0; 
      return val; 
     } 
    }); 
    return val; 
} 

당신은 실제로 하나의 jQuery 문이 모든 게 그 진술의 length에 조건 연산자를 대체 할 수 예 :http://jsfiddle.net/LLKbP/

+0

고맙습니다. 그게 매력처럼 작동합니다. 'LEmptyComments'외에도 다른 Lable 'LEmptyCategory'에 대해 동일한 작업을 수행해야하는 경우 궁금합니다. 동일한 범위에 추가 할 수 있습니다. [id * =] – BumbleBee

+1

문제 없습니다. 나는 당신이 쉼표 (',')를 사용하여 할 수있는 여러 선택자를 결합하는 방법이라고 생각한다 :'$ ("selector1, selector2") ....' –

0

사용 : $("#LEmptyComments") ..........

와 당신이없는

function chkCmnts() { 

     var val = 1; 
     $("label[id*='LEmptyComments']").each(function() { 
      if ($(this).className != "") { 
       val = 0; 
       return val; 
      } 
     }); 
     return val; 

    } 

이것은 HTML 페이지에서 같은 lable가 보이는 방법이다 오직 하나만 있어야하기 때문에 각각을 사용해야한다.

+0

나는 라벨이 여러 개의 lables가 있음을 의미하는 insdie content 페이지 인 repeater 컨트롤 안에 있다고 언급했기 때문에. 이것은 HTML에서 보이는 lable의 모습입니다. BumbleBee

1

이 시도 :

var class = $("#<%=LEmptyComments.ClientID%>").attr("class"); 

편집

이 문서가 문제를 해결하는 것입니다하지만 난 당신이 달성하려고하는 무엇을 물어 보곤

+0

죄송합니다.수정 된 답변은 매력처럼 작동해야합니다. –

0

는 ASP.NET Label 컨트롤 작업을 개정 더 나은 해결책이있을 수 있습니다.

function chkCmnts() { 

     var val = 1; 
     $("#LEmptyComments").each(function() { 
      if ($(this).className != "") { 
       val = 0; 
       return val; 
      } 
     }); 
     return val; 

    } 
1

"label"은 HTML 요소가 아니므로 ASP.NET 컨트롤 유형입니다.

리피터 내부의 컨트롤에 대해 생성 된 asp.net ID를 일치시키지 말고 각 라벨에 미리 마커로 사용할 알려진 클래스를 지정하는 것이 좋습니다. 이렇게하면 테스트하려는 컨트롤 집합을 쉽게 얻을 수 있습니다.

일단 원하는 것이 무엇인지 확인하면됩니다.

$('.repeater-label').each(function() { 
    if (this.className != 'repeater-label') { 
     /// any elements with classes other than just repeater-label 
    } 
}); 

는 "중계기 라벨은"당신이 중계기 내부에서보고 싶은 모든 것을 추가 된 클래스입니다, 아마, 당신이 찾고있는 요소에 대해 너무 다른 클래스가됩니다.

관련 문제