2011-09-28 31 views
11

Bạn đã tham gia hangout này trong một thời gian. Về cơ bản, tôi cần phải kiểm tra nơi một href trên một thẻ neo với các lớp .pdf-download là sản phẩm nào, và nếu có, ẩn nó.JQuery: Ẩn neo nếu href trống

Tôi đã thử một vài tùy chọn nhưng không có may mắn. Đây là những gì tôi có cho đến nay:

$("a.pdf-download").each(function (i) { 
    if ($('[href]:empty',this).length == 1) { 
    $(this).hide(); 
    } else { 
    $(this).show(); 
    } 
}); 
+3

Hi Guy - Tôi thấy bạn đã hỏi ba câu hỏi và nhận được câu trả lời một số tốt. Đảm bảo bạn đánh dấu câu trả lời là chính xác bằng cách chọn dấu kiểm bên cạnh câu trả lời hay nhất. Đó là cách cộng đồng SO hoạt động. Bạn cũng có thể muốn đọc Câu hỏi thường gặp - http://stackoverflow.com/faq – mrtsherman

Trả lời

19
if ($(this).attr('href') != '') { 
    $(this).hide(); 
} else { 
    $(this).show(); 
} 

Lưu ý rằng bạn cũng có thể làm điều này trong css với attribute selectors:

a.pdf-download[href='']{ 
    display:none; 
} 

này không được hỗ trợ trong IE6 mặc dù.

+5

+1 - Tôi thích giải pháp CSS. Bạn có thể sử dụng cùng một bộ chọn trong jQuery nếu bạn muốn. '$ ('a [href =" "]'). hide();' – mrtsherman

+0

Lưu ý rằng bộ chọn jQuery sẽ không ẩn một thẻ liên kết mà không có thuộc tính href nào cả. –

3

Điều gì đó giống như công việc này?

$("a.pdf-download").each(function (i) { 
    if ($(this).attr('href').length == 0) { 
    $(this).hide(); 
    } else { 
    $(this).show(); 
    } 
}); 
+0

Điều này hoạt động nếu href được đặt trên phần tử, nhưng nếu không, nó sẽ gây ra lỗi. Nếu bạn thử '$ (' kiểm tra') .attr ('href'). Length' nó sẽ trả về" TypeError: Không thể đọc thuộc tính 'length' của undefined "như' .attr ('href') 'trả về' undefined '. Tôi tưởng tượng trong hầu hết các trường hợp phương pháp này sẽ hoạt động tốt, nhưng nó đáng chú ý này báo trước. – andyface

4

Sử dụng giải pháp này. nó cũng sẽ tạo ra các kết quả mong muốn khi thuộc tính href không được xác định. Nếu bạn sử dụng bộ chọn CSS (JQuery), các thuộc tính không tồn tại href sẽ không được phát hiện.

$("a.pdf-download").each(function (i) { 
    if (!this.href) { 
     $(this).hide(); 
    } else { 
     $(this).show(); 
    } 
}) 

Nó không cần thiết phải sử dụng một phương pháp JQuery để có được những thuộc tính href, vì this.href là giống như có thể đọc được, nhanh hơn và cũng được hỗ trợ phổ biến.

0

Tôi là một jquery mới bắt đầu bản thân mình, nhưng thats làm thế nào tôi sẽ làm điều đó:

$("a.pdf-download").each(function (i) { 

    var aHref = $(this).attr('href'); 

    if (aHref == '' || !aHref) { 

     $(this).hide(); 

    }; 

}); 

Demo: http://jsfiddle.net/BZq9c/1/

6

Bạn cũng có thể làm điều này với bộ chọn jQuery, như sau:

// Hide any links with blank href or no href attribute 
$('a.pdf-download[href=], a.pdf-download:not([href])').hide(); 
1
$("a.pdf-download").each(function() { 
    var href = $(this).attr("href"); 
    if(href == '') { 
     $(this).remove(); 
    } 
}); 

hoặc

$("a.pdf-download[href='']").remove() 
Các vấn đề liên quan