클릭 핸들러에서 이벤트 전파 중지

세르 기

동적으로 생성되는 여러 목록이있는 페이지가 있습니다. 이러한 목록은 슬라이더를 만드는 이미지로 구성되어 있으므로 화살표를 클릭하여 다음 또는 이전 이미지를 볼 수 있습니다. 그러나 지금은 이전 또는 다음 버튼을 클릭 할 때마다 페이지의 모든 목록에 영향을줍니다. 이벤트 전파를 중지하고 클릭이 발생하는 목록에만 영향을 미치도록이 코드를 수정하려면 어떻게해야합니까?

이것은 기본 HTML 구조입니다 (Prestashop이지만 다음과 같은 것을 생성합니다).

<div class="image-thumbs-container">

  <ul class="thumbnails-custom-list">
    <li> <!-- image --> </li>
    <li> <!-- image --> </li>
  </ul>

  <div class="list-inline-controls">
    <div class="list-left-control"> &#x2329; </div>
    <div class="list-right-control"> &#x232A; </div>
  </div>

</div>


var $first = $('li:first', 'ul.thumbnails-custom-list'),
    $last = $('li:last', 'ul.thumbnails-custom-list');
$(".list-right-control").click(function () {
    var $next, $selected = $(".selected");

    $next = $selected.next('li').length ? $selected.next('li') : $first;
    $selected.removeClass("selected");
    $next.addClass('selected');

});

$(".list-left-control").click(function () {
    var $prev, $selected = $(".selected");

    $prev = $selected.prev('li').length ? $selected.prev('li') : $last;
    $selected.removeClass("selected");
    $prev.addClass('selected');
});
Carsten Løvbo Andersen

이것은 트릭을 할 것입니다.

이제 "화살표"는 클릭 한 화살표가있는 li내부 에만 영향을줍니다 div class="image-thumbs-container".

$(".list-right-control").click(function() {
  var $first = $(this).closest(".image-thumbs-container").find('ul.thumbnails-custom-list li:first');

  var $next, $selected = $(this).closest(".image-thumbs-container").find(".selected");

  $next = $selected.next('li').length ? $selected.next('li') : $first;
  $selected.removeClass("selected");
  $next.addClass('selected');

});

$(".list-left-control").click(function() {
  var $last = $(this).closest(".image-thumbs-container").find('ul.thumbnails-custom-list li:last');

  var $prev, $selected = $(this).closest(".image-thumbs-container").find(".selected");

  $prev = $selected.prev('li').length ? $selected.prev('li') : $last;
  $selected.removeClass("selected");
  $prev.addClass('selected');
});
.selected {
  color: yellow
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="image-thumbs-container">

  <ul class="thumbnails-custom-list">
    <li>
      img
    </li>
    <li>
      img
    </li>
  </ul>

  <div class="list-inline-controls">
    <div class="list-left-control"> &#x2329; </div>
    <div class="list-right-control"> &#x232A; </div>
  </div>

</div>


<div class="image-thumbs-container">

  <ul class="thumbnails-custom-list">
    <li>
      img
    </li>
    <li>
      img
    </li>
    <li>
      img
    </li>
    <li>
      img
    </li>
  </ul>

  <div class="list-inline-controls">
    <div class="list-left-control"> &#x2329; </div>
    <div class="list-right-control"> &#x232A; </div>
  </div>

</div>

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Leaflet에서 '클릭'이벤트 전파 중지

분류에서Dev

onchange 이벤트 핸들러에서 클릭 이벤트 실행을 중지하는 방법

분류에서Dev

"this"는 클릭 이벤트 핸들러에서 작동하지 않습니다.

분류에서Dev

HTML에서 다중 인수 onMouseover 이벤트 핸들러 전달

분류에서Dev

jQuery 클릭 이벤트 핸들러가 실행되지 않음

분류에서Dev

아래 코드에서 JavaScript 클릭 이벤트 핸들러가 실행되지 않았습니다.

분류에서Dev

클릭이 부모에게 전파되지 않도록 중지

분류에서Dev

공통 이벤트 핸들러에 관련 클래스 전달

분류에서Dev

AmStockCharts-클릭 이벤트 핸들러

분류에서Dev

클릭 이벤트 핸들러

분류에서Dev

TypeScript 클릭 이벤트 핸들러

분류에서Dev

클릭 이벤트 전파 중 팝업 차단

분류에서Dev

콘텐츠 스크립트에서 작동하지 않는 클릭 핸들러

분류에서Dev

Vue.js는 바운드 데이터를 클릭 이벤트 핸들러에 전달합니다.

분류에서Dev

backbon subview에서 다중 이벤트 핸들러 실행 방지

분류에서Dev

<object>의 SVG를 사용하면 클릭 이벤트가 상위 핸들러로 전파 될 수 있습니까?

분류에서Dev

동적 버튼 클릭시 이벤트 핸들러가 실행되지 않음

분류에서Dev

클릭 이벤트 핸들러가 작동하지 않습니다.

분류에서Dev

jQuery Appended 버튼 클릭 이벤트 핸들러가 작동하지 않음

분류에서Dev

VBA의 다른 버튼 클릭 이벤트 내에서 버튼 클릭 이벤트 핸들러 사용

분류에서Dev

재료 UI의 행 클릭 및 대화 상자에서 이벤트 전파 방지

분류에서Dev

재료 UI의 행 클릭 및 대화 상자에서 이벤트 전파 방지

분류에서Dev

동일한 클릭 이벤트에서 두 개 이상의 클릭 이벤트 중지

분류에서Dev

전단지에서 마커를 클릭 할 때지도 클릭 이벤트를 생성하지 마십시오.

분류에서Dev

Backbone.js에서 한 번만 작동하는 클릭 이벤트 핸들러

분류에서Dev

이전 클릭 효과를 제거하지 않고 jQuery에서 클릭 이벤트 반복

분류에서Dev

QWidget 클릭 이벤트를 무시하고 OS에 전파

분류에서Dev

클릭 핸들러 내에서 클릭 트리거

분류에서Dev

빠른 클릭에서 en 이벤트 핸들러가 두 번 호출되는 것을 방지하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Leaflet에서 '클릭'이벤트 전파 중지

  2. 2

    onchange 이벤트 핸들러에서 클릭 이벤트 실행을 중지하는 방법

  3. 3

    "this"는 클릭 이벤트 핸들러에서 작동하지 않습니다.

  4. 4

    HTML에서 다중 인수 onMouseover 이벤트 핸들러 전달

  5. 5

    jQuery 클릭 이벤트 핸들러가 실행되지 않음

  6. 6

    아래 코드에서 JavaScript 클릭 이벤트 핸들러가 실행되지 않았습니다.

  7. 7

    클릭이 부모에게 전파되지 않도록 중지

  8. 8

    공통 이벤트 핸들러에 관련 클래스 전달

  9. 9

    AmStockCharts-클릭 이벤트 핸들러

  10. 10

    클릭 이벤트 핸들러

  11. 11

    TypeScript 클릭 이벤트 핸들러

  12. 12

    클릭 이벤트 전파 중 팝업 차단

  13. 13

    콘텐츠 스크립트에서 작동하지 않는 클릭 핸들러

  14. 14

    Vue.js는 바운드 데이터를 클릭 이벤트 핸들러에 전달합니다.

  15. 15

    backbon subview에서 다중 이벤트 핸들러 실행 방지

  16. 16

    <object>의 SVG를 사용하면 클릭 이벤트가 상위 핸들러로 전파 될 수 있습니까?

  17. 17

    동적 버튼 클릭시 이벤트 핸들러가 실행되지 않음

  18. 18

    클릭 이벤트 핸들러가 작동하지 않습니다.

  19. 19

    jQuery Appended 버튼 클릭 이벤트 핸들러가 작동하지 않음

  20. 20

    VBA의 다른 버튼 클릭 이벤트 내에서 버튼 클릭 이벤트 핸들러 사용

  21. 21

    재료 UI의 행 클릭 및 대화 상자에서 이벤트 전파 방지

  22. 22

    재료 UI의 행 클릭 및 대화 상자에서 이벤트 전파 방지

  23. 23

    동일한 클릭 이벤트에서 두 개 이상의 클릭 이벤트 중지

  24. 24

    전단지에서 마커를 클릭 할 때지도 클릭 이벤트를 생성하지 마십시오.

  25. 25

    Backbone.js에서 한 번만 작동하는 클릭 이벤트 핸들러

  26. 26

    이전 클릭 효과를 제거하지 않고 jQuery에서 클릭 이벤트 반복

  27. 27

    QWidget 클릭 이벤트를 무시하고 OS에 전파

  28. 28

    클릭 핸들러 내에서 클릭 트리거

  29. 29

    빠른 클릭에서 en 이벤트 핸들러가 두 번 호출되는 것을 방지하는 방법은 무엇입니까?

뜨겁다태그

보관