2014-01-28 47 views
0

我有以下HTML:設置event.target的值/文本與jQuery

<a class="small" href="/comments/new">Write New Comment</a> 

而下面的JS:

$(document).ready(function() {            
    $('.comment > a').click(function (event) {         
     var url = event.target.href           
     $('.comment_area').load(url)           
      **event.target.text = ""** 
      event.preventDefault()            
     })                  
    }) 

我試圖鏈接的文本設置爲空白,但似乎無法找到一種方法來做到這一點。我也試過:

event.target.text("") 
event.target.value = "" 

而且這些都不起作用。這甚至可以從JavaScript端做到嗎?

+0

請閱讀[jQuery的教程中有關基本事件處理(http://learn.jquery.com/events/event-basics/):*「除了事件對象,該事件處理函數也可以訪問DOM元素,處理程序是通過關鍵字'this'勢必要啓用DOM元素成一個jQuery對象,我們可以使用上,我們只是做'$(本)'「* jQuery方法。教程很棒,他們幫助很大!你應該閱讀它們! –

+0

從一切,我一直在看,它是一種曖昧的時候使用event.target,VS $(本)...因爲$(這)也可以參考周圍的DOM元素,而event.target指元素這實際上是點擊。 – reectrix

+0

'this'參照處理程序綁定到(除非您使用jQuery的事件委託機制)的元素。無論如何,這個頁面還提到'event.target'是*「發起事件的DOM元素」*。我引用的部分表示,我們將DOM元素(例如'this')傳遞給'$'(例如'$(this)'),以創建一個jQuery對象。我只是說,所有的信息是存在的,你只要把拼在一起:) –

回答

3

你可以簡單地使用this

$('.comment > a').click(function (event) { 
    $(this).text(""); 

    //Other stuff 
}); 

您不必使用event.target

this是指你已附上事件的元素。在你的情況下,$('.comment > a')

如果你有多個錨鏈接直接在容器.comment下,它有助於區分他們&你可以做每個錨鏈接的具體事情。

+1

是否也能解釋什麼'this'是,爲什麼它要傳遞給jQuery的? –

+0

@FelixKling - 當然可以。 – Krishna

0

設置文本空白使用這種方法.text('')

所以,你的方法將更改爲以下之一:

$(document).ready(function() {            
    $('.comment > a').click(function (event) {         
     var url = event.target.href; 
     // this can be replaced by the following 
     var url = $(this).attr('href'); 
     $('.comment_area').load(url);      
     $(this).text(''); // empty the current string 
     event.preventDefault(); 
    }); 
}); 

這是更好的做法是在代碼行的末尾添加;! :)

0

你的意思是說它消失了嗎?你可以這樣做:

$(this).hide(); 

$(this).text(""); 
+2

這會直接影響** .comment元素中的所有**錨點,而不僅僅是點擊一次。 –

+0

好點,更新使用$(this) – mcolo

0

你使用jQuery,爲什麼單獨的Javascript堅守?

$(document).ready(function() {            
    $('.comment > a').click(function (event) {         
     $this = $(this); 
     var url = $this.attr('href'); 
     $('.comment_area').load(url)           
      $this.text(""); 
      event.preventDefault()            
     })                  
    }) 

這將節省您不同的事件結構的頭痛在不同的瀏覽器

0

嘗試:

event.target.innerHTML = ""; 

event.currentTarget.innerHTML = ""; 

this.innerHTML = ""; 

event.target是DOM頂部的第一個元素。這意味着如果您的a中有一個跨度,則會選擇跨度。

這就是爲什麼使用currentTarget更安全,因爲它是事件綁定的元素。

this默認相同currentTarget但是這個值可以通過.apply().call().bind被改變。