2016-06-24 75 views
0

我有我覺得是一個相當簡單的問題jQuery this.id選擇器的語法問題?

我有一系列的6個圖像與ids運行1-6,我想運行一個鼠標懸停功能。下面的代碼工程

<script>$('#0').mouseover(function(){alert(this.id)});</script> 
<script>$('#1').mouseover(function(){alert(this.id)});</script> 
<script>$('#2').mouseover(function(){alert(this.id)});</script> 
<script>$('#3').mouseover(function(){alert(this.id)});</script> 
<script>$('#4').mouseover(function(){alert(this.id)});</script> 
<script>$('#5').mouseover(function(){alert(this.id)});</script> 
<script>$('#6').mouseover(function(){alert(this.id)});</script> 

但我想把它寫成一行代碼。我認爲以下應該工作,但它不。請問我錯過了什麼?

<script>$('#' + this.id).mouseover(function(){alert(this.id)});</script> 

感謝您的幫助

回答

1

你需要所有的ID選擇提供給單個對象爲逗號分隔字符串:

$('#0, #1, #2, #3, #4, #5, #6').mouseover(function() { 
    console.log(this.id); 
}); 

或者更好的是,在把一個普通類所有這些元素,並通過該類選擇:

$('.myClass').mouseover(function() { 
    console.log(this.id); 
}); 
+0

是不是' $(this).attr(「id」)'在jQuery方式?? – eisbehr

+0

你可以這樣做,但是你已經可以從'this'引用DOMElement的'id'屬性,所以創建一個新的jQuery對象來獲得你已經有權訪問的屬性是多餘的。 –

+0

可能是多餘的,但更多的consitent。但沒關係,你沒有錯。 :) – eisbehr

1

實例this在jQuery事件處理程序中包含由您提供的選擇器匹配的當前元素。它僅在回調函數中可用。這是正確的做法:

$('#0, #1, #2, #3, #4, #5, #6').mouseover(function() { 
    alert(this.prop('id')); 
}); 

還要注意的是,爲了獲得一個元素的ID,你應該使用this.prop('id')(對於DOM元素)或this.attr('id')(對於HTML元素)