jQuery 클릭 리스너 및 AJAX 요청-두 번째 리스너가 작동하지 않음

레고 다무스

한 페이지에 두 개의 클릭 리스너가 있는데, 하나는 하위 탐색 ( <li>메뉴에서 동적으로 변경됨 ) 용이고 다른 하나는 메뉴 용 (즉, 다른 <ul>.

<nav class="sub-nav">
            <ul class="nav__list"> <!-- "sub-nav__item" has click listener -->
              <a id="general"   class="sub-nav__item sub-nav__item--active" href="#"><li>General</li></a>
              <a id="ordering"  class="sub-nav__item" href="#"><li>Ordering</li></a>
              <a id="payment"   class="sub-nav__item" href="#"><li>Payment</li></a>
              <a id="shipping"  class="sub-nav__item" href="#"><li>Shipping</li></a>
              <a id="receiving" class="sub-nav__item" href="#"><li>Receiving</li></a>
            </ul>
          </nav> 

          <div class="menu-holder">
            <ul class="menu"> <!-- "menu__item" has click listener and changes "content-area" -->
              <li class="menu__item menu__item--active" id="questions"><a href="#">Questions</a></li>
              <li class="menu__item" id="customer-inquiries"><a href="#">Customer Inquiries</a></li>
            </ul> <!-- menu -->
            <ul class="content-area">
              <li class="content-area__header">Questions</li>
              <li class="content-area__item"><p>If you have questions about these policies, please feel free to contact us at any time.</p><p>With your assistance, we can provide you and all of our customers with quality service and help everyone have a successful year!</p></li>
            </ul> <!-- sub menu -->
          </div> <!-- menu-holder -->

하위 탐색 리스너가 제대로 작동하지만 내 문제는 페이지가 처음로드 될 때만 메뉴 리스너가 작동한다는 것입니다. 하위 탐색 클릭 리스너를 활성화하고 콘텐츠가 변경되면 메뉴 클릭 리스너가 더 이상 작동하지 않습니다. 하위 탐색에 대한 내 자바 스크립트가 메뉴의 클래스 이름을 올바르게 추가하는 것 같습니다. 각 클릭 리스너는 별도의 파일에 있으며 각 리스너는 동일한 .json 파일에 대해 자체 AJAX 요청을 작성합니다.

javascript 파일에서 $('.sub-nav__item').click(function() {..code here..}$('.menu__item').click(function() {..code here..}호출하고 있습니다.

전 세계적으로 인식되지 않는 무언가와 관련이있는 직감이 있지만 javascript / jquery에 익숙하지 않기 때문에 어둠 속에서 촬영합니다.

내가 당신의 머리 위로 시도해야 할 간단한 것이 있으면 알려주십시오. 지금은 자바 스크립트 코드를 게시하지 않겠습니다. 다소 길지만 도움이되는지 알려주세요.

감사! Jake

다음은 sub-nav__item을 클릭 한 메뉴베이스를 변경하는 스크립트입니다.

$('.sub-nav__item').click(function() {  
    /* fade the dom out */ 
    $('.menu-holder')
        .fadeTo('.35s', '0')
        .delay(100);
    //console.log( "The ID is: " + $(this).attr('id') );

    /* remove other active classes */
    $('.sub-nav__item--active').removeClass('sub-nav__item--active');
    /* Adding the active class */
    $(this).addClass('sub-nav__item--active');

    /* clone the grid__cell */
    var gridCell = $(".menu").clone();      
    sleep(200); // allow the fade to occur

    /* make the request */
    ajaxRequest( $(this).attr('id'), gridCell );

    sleep(200); // allow the request to occur before fade in

    /* processing done...fade dom back in */
    $('.menu-holder').fadeTo('.75s', '1');
});

/*
 * This function submits the request for the JSON file for the sub-nav
 */
function ajaxRequest( reqID, gridCell ) {
    console.log("Request ID: " + reqID);

    var domObj =        "<li class=\"menu__item\" id=\"{{itemID}}\"><a href=\"#\">{{itemLink}}</a></li>"; 
    var domObjContent = "<li class=\"content-area__header\">{{contentHeader}}</li>"
                      + "<li class=\"content-area__item\">{{contentText}}</li>";

    $.ajax({
        type:"GET",
        url:"js/policies.json",
        success: function(response) {

            console.log("Request was successful.");

            /* clear the grid */
            $('.menu').empty();
            $('.content-area').empty();
            var content = [];
            var firstHasBeenFound = false;
            for( var i=0; i<response.data.length; i++) { 

                if( response.data[i].category == reqID.toString() ) {
                    content = response.data[i];

                    if( !firstHasBeenFound ) {
                        /* set default view */
                        $('.content-area').append( dom1ObjContent
                            .replace(/{{contentHeader}}/,   content.heading)
                            .replace(/{{contentText}}/,     content.verbiage) );
                        firstHasBeenFound = true;
                    }

                    / * For Debugging purposes */
                    // console.log( "The Response is: "
                                //       + content.category +
                                //     ", " + content.heading );

                    /* add li to menu */
                    $('.menu').append( domObj
                        .replace(/{{itemLink}}/,        content.heading) 
                        .replace(/{{itemID}}/,          content.tag) );
                } 
                else {
                    console.log("At least one item did not match");
                }
              } /* for */
              firstHasBeenFound = false; // resetting the boolean
        }, /* success funct */  
    }); /* ajax */
    console.log("AJAX Request Done.");
} /* ajaxRequest */
이고르

.menu__itemDOM 요소를 동적으로 [재 작성]하는 경우 이러한 요소에는에서 수행 된 이벤트 첨부가 없습니다 $(document).ready(). jQuery.on이러한 상황에 대한 사용 방법 http://api.jquery.com/on/ .

$(".menu").on("click", ".menu__item", function() {...});

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

jQuery 선택, 두 번째 트리거가 작동하지 않음

분류에서Dev

두 번째 클릭에서 jQuery 클릭 기능이 작동하지 않음

분류에서Dev

두 번째 클릭시 jQuery가 실행되지 않음

분류에서Dev

JQuery.on () 클릭 리스너가 예상대로 작동하지 않습니다.

분류에서Dev

LibGDX : ImageButton 클릭 리스너가 작동하지 않음

분류에서Dev

클릭 이벤트 리스너가 호출 한 함수는 클릭하지 않고 호출되지만 두 번째 실행시에만

분류에서Dev

첫 번째 클릭에서 jQuery가 작동하지 않음

분류에서Dev

외부 클릭시 두 번째 요소가 닫히지 않음

분류에서Dev

리스너를 두 번 클릭하면 Google 차트가 멈춤

분류에서Dev

웹 구성 요소 요소 클릭 이벤트 리스너가 작동하지 않음

분류에서Dev

img src 클릭 리스너를 변경하여 두 번째 img src 변경

분류에서Dev

Jquery 및 Ajax를 사용하여 제출 한 후 두 번째로 양식 제출이 작동하지 않음

분류에서Dev

두 번째 이벤트 리스너가 작동하지 않는 이유는 무엇입니까?

분류에서Dev

ajax 요청 ($ .load)으로 페이지를 두 번째로로드 할 때 jQuery Datepicker가 작동하지 않습니다.

분류에서Dev

jQuery가 두 번째 클릭을 수신하지 않습니다.

분류에서Dev

긴 클릭 리스너가 작동하지 않습니다.

분류에서Dev

두 번째 클릭 할 때까지 체크 박스가 확인되지 않음

분류에서Dev

탐색 창 항목 클릭 리스너가 작동하지 않음

분류에서Dev

목록보기 항목 클릭 리스너가 작동하지 않음

분류에서Dev

jQuery-두 번째 클릭 후 onclick 이벤트가 클래스를 변경하지 않습니다.

분류에서Dev

MySQLi 두 번째 쿼리가 작동하지 않음

분류에서Dev

두 번째 ajax 호출 후 jquery가 작동하지 않습니다.

분류에서Dev

첫 번째 스피너가 값을 얻을 때까지 두 번째 스피너 클릭 비활성화 : android

분류에서Dev

두 번째 Ajax 후 Yii 및 Bootstrap 위젯이 작동하지 않음

분류에서Dev

Selenium WebDriver 두 번째 클릭이 작동하지 않음

분류에서Dev

두 번째 클릭시 JavaScript 버튼이 작동하지 않음

분류에서Dev

두 번째 버튼 클릭이 작동하지 않습니다 (JQuery).

분류에서Dev

jQuery는 두 번째 클릭 기능에서 작동하지 않는 className 찾기

분류에서Dev

클릭 리스너가 모달을 표시하지 않음

Related 관련 기사

  1. 1

    jQuery 선택, 두 번째 트리거가 작동하지 않음

  2. 2

    두 번째 클릭에서 jQuery 클릭 기능이 작동하지 않음

  3. 3

    두 번째 클릭시 jQuery가 실행되지 않음

  4. 4

    JQuery.on () 클릭 리스너가 예상대로 작동하지 않습니다.

  5. 5

    LibGDX : ImageButton 클릭 리스너가 작동하지 않음

  6. 6

    클릭 이벤트 리스너가 호출 한 함수는 클릭하지 않고 호출되지만 두 번째 실행시에만

  7. 7

    첫 번째 클릭에서 jQuery가 작동하지 않음

  8. 8

    외부 클릭시 두 번째 요소가 닫히지 않음

  9. 9

    리스너를 두 번 클릭하면 Google 차트가 멈춤

  10. 10

    웹 구성 요소 요소 클릭 이벤트 리스너가 작동하지 않음

  11. 11

    img src 클릭 리스너를 변경하여 두 번째 img src 변경

  12. 12

    Jquery 및 Ajax를 사용하여 제출 한 후 두 번째로 양식 제출이 작동하지 않음

  13. 13

    두 번째 이벤트 리스너가 작동하지 않는 이유는 무엇입니까?

  14. 14

    ajax 요청 ($ .load)으로 페이지를 두 번째로로드 할 때 jQuery Datepicker가 작동하지 않습니다.

  15. 15

    jQuery가 두 번째 클릭을 수신하지 않습니다.

  16. 16

    긴 클릭 리스너가 작동하지 않습니다.

  17. 17

    두 번째 클릭 할 때까지 체크 박스가 확인되지 않음

  18. 18

    탐색 창 항목 클릭 리스너가 작동하지 않음

  19. 19

    목록보기 항목 클릭 리스너가 작동하지 않음

  20. 20

    jQuery-두 번째 클릭 후 onclick 이벤트가 클래스를 변경하지 않습니다.

  21. 21

    MySQLi 두 번째 쿼리가 작동하지 않음

  22. 22

    두 번째 ajax 호출 후 jquery가 작동하지 않습니다.

  23. 23

    첫 번째 스피너가 값을 얻을 때까지 두 번째 스피너 클릭 비활성화 : android

  24. 24

    두 번째 Ajax 후 Yii 및 Bootstrap 위젯이 작동하지 않음

  25. 25

    Selenium WebDriver 두 번째 클릭이 작동하지 않음

  26. 26

    두 번째 클릭시 JavaScript 버튼이 작동하지 않음

  27. 27

    두 번째 버튼 클릭이 작동하지 않습니다 (JQuery).

  28. 28

    jQuery는 두 번째 클릭 기능에서 작동하지 않는 className 찾기

  29. 29

    클릭 리스너가 모달을 표시하지 않음

뜨겁다태그

보관