の 2 番目の引数on
はセレクターであり、jQuery オブジェクトではありません。イベント委任に使用されます。
それらを直接接続するつもりなら、次のようにします。
$("#contcont a, #leftnav li a, #leftnav li ul a, #mainarea-home a").not(".secitem-mid a").on("click", function clicker(event, sData) {
var $this = $(this);
sHREF = $this.attr("href");
alert(sHREF);
});
本当にイベント委任を使用したい場合、.not
(マークアップによっては) メイン シリーズの各セレクターでそれを繰り返さなければならない可能性があるため、この部分は少し扱いにくいものになります。それは醜いので、後でハンドラー関数でその特定のケースを処理する方が良いかもしれません:
$(document).on("click", "#contcont a, #leftnav li a, #leftnav li ul a, #mainarea-home a", function clicker(event, sData) {
var $this = $(this);
// Handle the "not" part
if (!$this.is(".secitem-mid a")) {
sHREF = $this.attr("href");
alert(sHREF);
}
});
ただし、個別に: 通常は、処理する要素に最も近いコンテナーで委任をルート化することをお勧めします。、、および要素が動的でない#contcont
場合は、たとえば、次のようにではなく、それらの委任をルート化することを検討します。#leftnav
#mainarea-home
document
$("#contcont" ).on("click", "a:not(.secitem-mid a)", clicker);
$("#leftnav" ).on("click", "li a:not(.secitem-mid a)", clicker);
$("#mainarea-home").on("click", "a:not(.secitem-mid a)", clicker);
function clicker(event, sData) { ... }
必要なのは 4 つではなく 3 つだけだったことに注意してください。あなたの#leftnav li ul a
セレクターはすでに でカバーされてい#leftnav li a
ます。
そして、少し話題から外れています:名前付き関数式を使用していることに注意してください。これは、IE8 以前では扱いにくい場合があります。上記の最後の例では、それを廃止し、代わりに関数宣言にしています。