2011-04-26 60 views
0

所以我想設置一個元素的文本變量被點擊時,該元素:設置VAR與.text區段()

$('.clickme').click(function() { 
    var selected; 
    var selected = this.text(); 
}); 

我看過的文檔,我相信這應該工作。任何想法可能是什麼問題?

+0

在你的榜樣,你宣稱'selected'兩次(使用'var'兩次)。當你首次聲明變量時,你應該只使用'var'。 – kapa 2011-04-26 06:58:59

+1

@bazmegakapa:你絕對正確。這是無害的,但(這實際上是在規範中)。你可以自由使用'var',它完全被忽略。 (只是'var'部分;它上面的任何初始化器都被視爲一個賦值。)更多信息:http://blog.niftysnippets.org/2008/03/poor-misunderstood-var.html – 2011-04-26 07:02:01

+0

@ T.J。非常感謝 :)。從來沒有試過寫兩遍,我學到了一些新東西。 **所以:**這是可能的,但從來不是一個好主意,因爲它是不合邏輯的。 – kapa 2011-04-26 07:06:02

回答

3

嘗試:

var selected = $(this).text(); 

如果沒有運氣,也許是表單元素所以它的價值:

var selected = $(this).val(); 

如果仍然沒有運氣,讓我們知道了什麼是clickme(DIV跨越? )並嘗試將其作爲「最後的手段」:

var selected = $(this).html(); 
+0

@Thomas:'click'中的'this'指的是原始DOM節點,但'text'是一個函數的jQuery實例。這就是爲什麼Shadow Wizard將'this'傳遞給'$()'以將DOM節點包裝在jQuery實例中並訪問jQuery函數的原因。 – 2011-04-26 07:03:05

+0

謝謝@ T.J澄清..如果這是表單元素,您可以使用原始DOM節點:'var selected = this.value;':) – 2011-04-26 07:12:04

1

if .clickme is i NPUT或textarea的:

var selected; 
$('.clickme').click(function() 
{ 
    selected = $(this).val(); 
}); 

其他:

var selected; 
$('.clickme').click(function() 
{ 
    selected = $(this).text(); 
}); 
1

你需要用的this與jQuery對象...

var selected = $(this).text(); 
0

如果你的聽衆是上的按鈕,IE沒有按不知道文本之間的差異值屬性和jQuery沒有修復它,getAttribute也沒有幫助。您需要使用getAttributeNode

<button value="the value" 
onclick="alert(this.getAttributeNode('value').value);">The text</button>