2012-07-26 12 views
10

chcę, że pewne działania w celu włączenia do zdarzenia click tagu zakotwiczenia, gdy jego href atrybut:a: nie (a: not ([href])) selektor

  • nie rozpocznie z mailto: i
  • nie kończy się # i
  • występuje z dowolnej wartości w tym pustym

Więc próbował tego kodu:

<a href="example.com">example.com</a> 
<a href="mailto:[email protected]">Someone</a> 
<a href="thepage#">The Page</a> 
<a>This does nothing</a> 

<script type="text/javascript"> 
    $(document).on('click', 'a:not([href^="mailto\\:"], [href$="\\#"], [href])', myFunction); 
</script> 

I to nie zadziałało. Ale ku mojej konsternacji to działa:

$(document).on('click', 'a:not([href^="mailto\\:"], [href$="\\#"], a:not([href]))', myFunction); 

Ale nie rozumiem jak. Zwróć uwagę na wewnętrzną :not(). Jak rozumiem, [href] oznacza, że ​​nie ma atrybutu href. Czy może jest odwrotnie?

Czy ktoś może doprowadzić mnie do światła?

Odpowiedz

9

[href] oznacza, że ​​istnieje atrybut href bez względu na to, czy ma jakąś wartość.

Jak pimvdb słusznie zauważył, można użyć

a[href]:not([href^="mailto\\:"], [href$="\\#"])

co oznacza „wszystko elementy z dowolnego atrybutu href, z wyjątkiem tych, których href atrybut zaczyna mailto: lub kończy #

+3

prawda , może on potrzebować [href]: nie (...) zamiast. – pimvdb

+0

jest też href = "javascript: void (0)" – Toolkit

Powiązane problemy