복붙노트

[JQUERY] 어떻게 jQuery를 사용하여 JSF 구성 요소를 선택?

JQUERY

어떻게 jQuery를 사용하여 JSF 구성 요소를 선택?

해결법


  1. 1.당신은 jQuery를 클라이언트 측에서 HTML DOM 트리로 작동하는지 깨달아야한다. 당신은 JSF 소스 코드에 작성한으로 jQuery를이 JSF 구성 요소를 직접 작동하지 않습니다,하지만 jQuery를 그 JSF 구성 요소에 의해 생성 된 HTML DOM 트리를 직접 작동합니다. 당신은 웹 브라우저와 오른쪽 클릭하면 다음 소스보기에서 페이지를 열어야합니다. 기본 분리 자로 :하면 JSF는 (: <데이터 테이블 H> 등
    와 같은) 모든 상위 NamingContainer 성분의 ID로 생성 된 HTML 입력 요소의 ID를 앞에 추가 것을 알 것이다. 그래서 예를 들어,

    당신은 jQuery를 클라이언트 측에서 HTML DOM 트리로 작동하는지 깨달아야한다. 당신은 JSF 소스 코드에 작성한으로 jQuery를이 JSF 구성 요소를 직접 작동하지 않습니다,하지만 jQuery를 그 JSF 구성 요소에 의해 생성 된 HTML DOM 트리를 직접 작동합니다. 당신은 웹 브라우저와 오른쪽 클릭하면 다음 소스보기에서 페이지를 열어야합니다. 기본 분리 자로 :하면 JSF는 (: <데이터 테이블 H> 등 와 같은) 모든 상위 NamingContainer 성분의 ID로 생성 된 HTML 입력 요소의 ID를 앞에 추가 것을 알 것이다. 그래서 예를 들어,

    <h:form id="foo">
        <p:selectManyCheckbox id="bar" />
        ...
    

    로 생성 된 HTML에 종료됩니다

    <form id="foo" name="foo">
        <input type="checkbox" id="foo:bar" name="foo:bar" />
        ...
    

    대신 정확히 ID로 요소를 선택해야합니다. : 그러나 의사 선택을 나타내는 CSS 식별자에 특수 문자입니다. A의 요소를 선택하려면 jQuery를에 CSS 선택기를 사용하여 ID에, 당신이 중 하나를 백 슬래시 이스케이프하거나 [ID = ...] 속성 선택기를 사용하거나 이전에서 getElementById를 (사용합니다) :

    var $element1 = $("#foo\\:bar");
    // or
    var $element2 = $("[id='foo:bar']");
    // or
    var $element3 = $(document.getElementById("foo:bar"));
    

    당신은 XXX가 증가 수를 나타내는 ID의 자동 생성 j_idXXX 부분을 참조하면 증가 수는 동적이며 트리에서 구성 요소의 물리적 위치에 따라 변경 될 수 있기 때문에, 당신은 특정 구성 요소를 고정 ID를 제공해야합니다.

    다른 방법으로, 당신은 또한 단지 클래스 이름을 사용할 수 있습니다 :

    <x:someInputComponent styleClass="someClassName" />
    

    이는 같은 HTML에 종료

    <input type="..." class="someClassName" />
    

    그래서 당신은 그것을 얻을 수

    var $elements = $(".someClassName");
    

    이것은 더 나은 추상화와 재사용이 가능합니다. 확실히 요소 그런 종류의 고유하지 않습니다. 헤더, 메뉴, 컨텐츠 및 바닥 글 등 만 메인 레이아웃 요소는 정말 독특하지만, 그들은 이미 NamingContainer 보통 차례로 없습니다.

    또 다른 대안으로, 당신은 단지 기능으로 HTML DOM 요소 자체를 전달할 수 :

    <x:someComponent onclick="someFunction(this)" />
    
    function someFunction(element) {
        var $element = $(element);
        // ...
    }
    

  2. 2.당신은 또한 JQuery와 "속성이 선택기를 포함합니다"를 사용할 수 있습니다 (여기에 URL을 http://api.jquery.com/attribute-contains-selector/)

    당신은 또한 JQuery와 "속성이 선택기를 포함합니다"를 사용할 수 있습니다 (여기에 URL을 http://api.jquery.com/attribute-contains-selector/)

    예를 들어 당신이 가지고있는 경우

     <p:spinner id="quantity" value="#{toBuyBean.quantityToAdd}" min="0"/> 
    

    당신은 당신이 그것을 선택할 수의 객체에 뭔가를하고 싶어

    jQuery('input[id*="quantity"]')
    

    당신이 그 값을 인쇄 할 경우이 작업을 수행 할 수 있습니다

    alert(jQuery('input[id*="quantity"]').val());
    

    당신은 항상 실제 HTML 요소를 볼 수있는 요소의 실제 HTML 태그를 알고하기 위해 불을 지르고 또는 즉, 개발자 도구 또는 소스보기를 사용하여 (이 경우 스피너에 입력로 번역) ...

    다니엘.


  3. 3.당신이 RichFaces를 사용하는 경우 당신은 부자 확인할 수의 jQuery comonent을. 그것은 당신이 jQuery를 구성 요소에 대한 서버 측 ID를 지정할 수 있습니다. 예를 들어, 지정된 서버 ID와 구성 요소를 가지고, 당신은 다음 방법으로 어떤 jQuery를 관련 물건을 적용 할 수 있습니다 :

    당신이 RichFaces를 사용하는 경우 당신은 부자 확인할 수의 jQuery comonent을. 그것은 당신이 jQuery를 구성 요소에 대한 서버 측 ID를 지정할 수 있습니다. 예를 들어, 지정된 서버 ID와 구성 요소를 가지고, 당신은 다음 방법으로 어떤 jQuery를 관련 물건을 적용 할 수 있습니다 :

    <rich:jQuery selector="#<server-side-component-id>" query="find('.some-child').removeProp('style')"/>
    

    더 많은 정보 설명서를 확인하시기 바랍니다.

    희망이 도움이.


  4. 4.내가 경험을 선택할 때이 당신을 도울 것입니다 볼 = 예 ID가 dlg3 내 dialoguebox이 popup.and가 없음 값이되는 경우이다가 열리지 않습니다

    내가 경험을 선택할 때이 당신을 도울 것입니다 볼 = 예 ID가 dlg3 내 dialoguebox이 popup.and가 없음 값이되는 경우이다가 열리지 않습니다

  5. from https://stackoverflow.com/questions/7927716/how-to-select-jsf-components-using-jquery by cc-by-sa and MIT license