6

私はこのコードを持っています:

$('a').click(
   function() {
       $("#change_flash").css("display", "block"); $("#my_flash").css("display", "none");
  });

ただし、これはすべてのアンカー要素で機能します。このスクリプトは、rel="lightbox"属性を含むアンカー要素にのみ影響を与えたいと思います。

どうすればそれを達成できますか?

4

2 に答える 2

5
$('a[rel="lightbox"]').click(
   function() {
       $("#change_flash").css("display", "block"); $("#my_flash").css("display", "none");
  });
于 2012-06-04T13:51:05.057 に答える
5

以下を使用してください。

$('a[rel="lightbox"]').click(
    function(){
        // do your stuff here
    });

これはattribute="value"表記法を使用しています(参考文献を参照)。

他のオプションもあります:

  • 属性-begins-with attribute^="value":、
  • 属性-終了-with:attribute$="value",
  • attribute-contains: `attribute *="value"。

もちろん、$('[rel="lightbox"]')それ自体は絶対的に有効なセレクターですが、これにより、jQueryは、イベントをバインド/割り当てるために、ページ上のすべての要素でその属性と値を調べます。したがって、jQueryが一致する要素を見つけるために検索する必要のある要素の数を制限するには、タグ名、つまり、、またはクラス名click使用するのが常に最善です。$('a[rel="lightbox"]')

document.querySelectorAll()最近のブラウザでは、この「検索」がSizzleを使用するのではなく、ネイティブに渡されることを覚えているようですが、それでも、ブラウザが実行する必要のある作業の量を制限するのが最善です。

参照:

于 2012-06-04T13:51:14.450 に答える