2012-09-08 55 views
0

我有不同的容器,在不同的事件上重新加載。我有很多,所以我給每個容器類load如何獲取有關沒有回調的元素的信息

這是怎麼回事他們的樣子:

<div class="load" data-href="facebook"> 
</div> 

我也有一個功能,即通過各種操作觸發:

function get_timing(time) 
{ 
    $(".load").load("myfolder/mod_"+$(this).attr("data-href")+".php?action="+time, function() { 
     alert('Here I could use this:' + $(this).attr("data-href")); 
    } 
} 

我知道,我不能在本例中使用this以上,我只能在回調中使用它。我的問題是:如何使用對象的屬性來定義加載函數的路徑。

這是它如何工作的:

function get_timing(time) 
{ 
    $(".load").fadeIn(10, function() 
     { 
      $(this).load("myfolder/mod_"+$(this).attr("data-href")+".php?action="+time, function() { 
      alert('loaded'); 
     } 
    } 
} 

有沒有辦法做到這一點沒有asynchronus功能(在這種情況下.fadIn)左右)

希望我能解釋我的問題 - 謝謝提前!

+0

給他們一個ID並使用$('#yourID')? – Timm

+0

就像我在下面提到的 - everycontainer會有不同的ID,我將不得不爲每個容器單獨編寫函數! –

+0

當你說'由各種行爲觸發'時,這些行爲是什麼?你能否從這些行爲中將'$(this)'傳入你的函數? – Timm

回答

2

如果你想帶班一起去,你可以通過索引引用它們:

var element = $(".load").get(0); 
console.log($(element).attr("data-href")); 

請注意,您必須通過$(element)才能訪問attr()

如果你想重新jQueryfy element讀出所有具有給定類別的元素我推薦$.each()

//$.each($(".load"), function(index, value){ 
$(".load").each(function(index, value){ 
    console.log($(value).attr("data-href")); 
}); 
+0

我剛剛編輯了我的問題 - 但我認爲每個功能都是要走的路 - >我會試試看,並給你我的反饋(+驗收和+1,如果它正確!) –

+1

爲什麼不''()。加載「)。each(function(){...});'? –

+0

因爲'$ .each()'在Google中排名更高:3嚴重地,我同意你@FelixKling。它更乾淨。 – yoshi

0

試着給你的容器一個id:

<div class="load" data-href="facebook" id="facebookcontainer"> 
</div> 

然後,而不是用這個,你可以在JavaScript中使用$("#facebookcontainer")

+0

但是這並不能解決我的問題 - 因爲我有一個未定義數量的div。意味着我有10個'data-href =「facebook」',而20''data-href =「twitter」' - 我想用一個函數加載它們!我不喜歡給兩個元素使用相同的ID。 –

相關問題