2012-02-13 51 views
0

我有這種鏈接的識別的屬性jQuery的不從<a>標籤

var problem_id = $(this).attr("data-problem_id"); 

但它結束未定義。任何想法爲什麼?在其他情況下,我做了什麼似乎是完全這一點,我能夠得到problem_id

謝謝!

+0

工程就好:http://jsfiddle.net/7U3vA/。我猜這個問題是在你的代碼中的其他地方(也許'這不是你認爲它的對象)。 – Alxandr 2012-02-13 23:16:09

+0

@Alxandr有趣的一點。這還能做什麼?這是一個示例頁面的網址http://www.problemio.com/problems/problem.php?problem_id=157 – GeekedOut 2012-02-13 23:22:56

+0

您調用$(this)的範圍是多少? 這似乎是問題... – 2012-02-13 23:32:41

回答

1

我想我發現了你的錯誤,儘管它超出了你的問題範圍。關鍵是,this是一個div,而不是你的按鈕。你如何改變這一點,你需要親自看看。您可以重新分配點擊(而不是$("#div_id").live('click', blabla);$("#button_id").live('click', blabla);,也可以運行在點擊目標檢查

這看起來像:

$('#div_id').live('click', function(evt) { 
    var btn = $(evt.target).closest('a'); 
    var data_thingy = btn.data('data_thingy'); 
}); 

[編輯]
你可以btw也這樣做:$('#div_id a').live('click', blabla)this - 對象然後將是實際的按鈕。

+0

@Alexandr很好的抓住!!!!! – GeekedOut 2012-02-13 23:45:40

2

我相信你可以使用:

$(this).data("problem_id"); 

訪問數據的屬性。

+0

剛剛嘗試過......沒有工作:( – GeekedOut 2012-02-13 23:19:29

+0

在這種情況下,請嘗試'console.log(this)'並查看控制檯中顯示的內容。使用'this'錯誤。 – 2012-02-13 23:34:01

0

我認爲問題是$(this)不是你認爲它的超鏈接對象。你可以去到Console.log,看看對象究竟是什麼。也有你試過使用:

var problem_id = $('.image_button').attr('data-problem_id');