2014-01-06 40 views
1
$(document).ready(function(){ 

    $('#peoplelayer').click(function(){ 
     $("#peoplelayer").each(function(){ 

      $("#peoplelayer").fadeOut(500); 
      var str = $(this).text(); 
      alert(str); 
      //$("#peoplelayer").fadeTo(500,0.6); 

      }); 

    }); 
}); 

這是代碼,我使用相同的ID「#peoplelayer」所有的div,當我對他們中的一個單擊檢測被點擊的格文,它提醒這個div的所有文本使用相同的ID如何用相同的ID

我該如何防範這個問題,因爲我需要提醒只點擊div,除此之外,我需要給這個divs相同的ID?

+4

ID **必須是唯一的。請考慮使用類來代替。 – j08691

+0

您的標記無效,因此您的代碼行爲未定義。 – David

回答

10

ID是唯一的,所以你不能有兩個具有相同ID的元素。也許你打算使用類?

的divclass = 'peoplelayer'

變化id = 'peoplelayer',你可以使用此代碼:

$(document).ready(function(){ 

    $('.peoplelayer').click(function(){ 
     $(this).each(function(){ 

      $(this).fadeOut(500); 
      var str = $(this).text(); 
      alert(str); 
      //$(".peoplelayer").fadeTo(500,0.6); (I know it's commented, but just in case) 
      }); 
    }); 
}); 
0

,只要你想你可以有使用相同的類名的圖像。但是您的頁面上只能顯示一張圖片,其中包含給定的id。該ID對於元素是唯一的。

0

你需要做的是將它們改爲類。

因此,而不是id="peoplelayer",更改爲class="peoplelayer",然後你可以這樣寫。我做了一些改變,我認爲這將會如何工作。

$('.peoplelayer').click(function(){ 
     var str = $(this).text(); 
     $('.peoplelayer').fadeTo(500,0.6); 
     $(this).fadeOut(500); 
     alert(str); 
}); 
0

你的問題是事件處理程序中的每個事件(以及使用應該使用類的ID)。更改的元素有class="peoplelayer,然後你可以簡單的寫:

$(".peoplelayer").click(function(){ 
    var str = $(this).text(); 
    $(".peoplelayer").fadeOut(500); 
    alert(str); 
}); 

單擊功能將相同的點擊處理程序附加到每一個類的peoplelayer的元素,所以each你的點擊處理程序中做是不必要的,並且每次單擊任何元素時都會顯示每個元素的文本。

0

好吧,你可以使用類,並在他們上使用JS。 但您可以選擇與$("div[id='peoplelayer']")相同ID的div。

P.S.給兩個元素賦予相同的id不是一個好習慣。 示例fiddle