Làm cách nào tôi có thể loại trừ $ (cái này) khỏi bộ chọn jQuery?


203

Tôi có một cái gì đó như thế này:

<div class="content">
    <a href="#">A</a>
</div>
<div class="content">
    <a href="#">B</a>
</div>
<div class="content">
    <a href="#">C</a>
</div>

Khi một trong những liên kết này được nhấp, tôi muốn thực hiện chức năng. Leather () trên các liên kết không được nhấp. Tôi hiểu jQuery có: không phải là bộ chọn, nhưng tôi không thể tìm ra cách sử dụng nó trong trường hợp này bởi vì tôi cần phải chọn các liên kết bằng cách sử dụng$(".content a")

Tôi muốn làm một cái gì đó như

$(".content a").click(function()
{
    $(".content a:not(this)").hide("slow");
});

nhưng tôi không thể tìm ra cách sử dụng: không chọn đúng trong trường hợp này.


3
thử !$(this)mã đơn giản hơn.
Ari

Câu trả lời:


390

Hãy thử sử dụng not() phương pháp thay vì :not()bộ chọn .

$(".content a").click(function() {
    $(".content a").not(this).hide("slow");
});

Tại sao tôi không thể làm điều này hoạt động ... $ ("# menu-giữ #first_level li"). Không (này) .addClass ("returnToParent");
marck

4
@marck Không có ngữ cảnh, tôi không biết. Tạo một câu hỏi mới và tôi có thể giúp đỡ.
Dan Herbert

2
Đây là một giải pháp rất tệ (hiệu suất - khôn ngoan). Không có lý do thực sự để $(".content a")bên trong cuộc clickgọi lại ... trên MỌI lần nhấp ...
Ronen Cypis


9

Bạn cũng có thể sử dụng .siblings()phương thức jQuery :

HTML

<div class="content">
  <a href="#">A</a>
  <a href="#">B</a>
  <a href="#">C</a>
</div>

Javascript

$(".content").on('click', 'a', function(e) {
  e.preventDefault();
  $(this).siblings().hide('slow');
});

Bản demo hoạt động: http://jsfiddle.net/wTm5f/


5

Bạn nên sử dụng phương thức "anh chị em ()" và ngăn không cho chạy bộ chọn ".content a" nhiều lần chỉ để áp dụng hiệu ứng đó:

HTML

<div class="content">
    <a href="#">A</a>
</div>
<div class="content">
    <a href="#">B</a>
</div>
<div class="content">
    <a href="#">C</a>
</div>

CSS

.content {
    background-color:red;
    margin:10px;
}
.content.other {
    background-color:yellow;
}

Javascript

$(".content a").click(function() {
  var current = $(this).parent();
  current.removeClass('other')
    .siblings()
    .addClass('other');
});

Xem tại đây: http://jsfiddle.net/3bzLV/1/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.