2010-04-28 44 views
0

我正在學習JQuery。要傳遞JQuery中DIV標記的ID

<Div ID="top"> 
<DIV ID="testing1"> 
<DIV ID="testing2"><DIV ID="testing3">...<DIV ID="testing100"></Div> 

由於有幾十與PHP文件 產生不同的ID DIV標籤,我試圖給一個DIV標籤的動態ID傳遞給JQuery的自定義功能:

<script>$(function() { 
$("div").mouseover(function() { 
     var ID = $(this).children().attr('id'); 
     alert(ID);  });}); </script> 

但它不會工作。

+0

請注意:您的HTML代碼無效。 DIV總是需要一個結束標記,即使他們沒有內容:

selfawaresoup 2010-04-28 06:28:15

+0

你有一個迂迴的方式來附加此功能。將函數更改爲接收元素而不是其ID,或使該函數在'$(this)'元素上工作。然後你可以簡單地用'$(「div」)。mouseover(myFunction);'綁定它。 – Kobi 2010-04-28 06:46:48

回答

0

下面的示例工作,並且事件冒泡導致三個調用,每個調用依次給出「testing2」,「testing1」,然後按照該順序的「top」的標識。

<div id="top"> 
    <div id="testing1"> 
     <div id="testing2">x</div> 
    </div> 
</div> 
<script type="text/javascript" src="jquery.min.js"></script> 
<script type="text/javascript"> 
$(function() { 
    $("div").mouseover(function() { 
     var ID = this.id; 
     alert(ID);  
    }); 
}); 
</script> 
1

如果您需要觸發事件的DIV的ID,則可以使用$(this).id()而不是$(this).children().attr("id")

children()會給你一個DIV中所有元素的數組。但是,從多個元素列表中獲取一個ID會有點問題;)

如果您想要DIV中第一個元素的ID,請嘗試$(this).children().first().id()

+1

您可以在事件處理程序中使用'this.id'。無需包裝在jquery中,因爲jquery負責處理上下文。 – 2010-04-28 06:26:02

+0

@nikc:對。那也可以。 – selfawaresoup 2010-04-28 06:36:00

1

刪除.children() - 你需要div的id屬性,所以你不需要爲此而去其子女。您也可以使用.id()而不是.attr('id')

因此,它變得簡單$(this).id()以獲取調用該函數的元素的ID。

1

要運行f.e.的多個ID,列表,你可以做到以下幾點:

<script type="text/javascript"> 
$(function(){ 
$('a[voteid]').click (function(){ 
var nid = $(this).attr("voteid"); 
$.ajax({ 
type: "GET", 
url: "vote.php", 
data: "name="+ nid, 
dataType: "html", 
success:function(data){ $("span#voteajax" + nid).html(data)}, 
error:function(xhr,err,e){ alert("Error: " + err); } 
}); 
return false; 
}); 
}); 
</script> 

在PHP頁面的HTML將是這樣的:

<span id="voteajax<? echo $nid;?>"><a class="vbutton" voteid="<? echo $nid;?>" title="Vote!"><? echo $listings['votes'];?></a></span> 

希望這有助於!

歡呼聲, John V