2011-02-23 103 views
1

我一直在學習越來越多關於jQuery的知識,但在這裏我陷入了困境。jQuery noob:(this).replacewith我是否做錯了?

我有一個代碼來改變一個div的顏色,當一個複選框被束縛,工作正常。

這一點,我希望能夠改變對焦點textarea的內容後,我嘗試這樣做:

//textarea 
    $("textarea").focus(function(){ 
     if ($(this).contains('Skriv valg av headset her')){ 
     $(this).replaceWith(''); 
    }); 

但沒有效果。我有一些語法錯誤還是我採取了錯誤的方法?

jsFiddle example here

+0

jsFiddle示例其中? :-) – Rafay 2011-02-23 13:49:19

+0

HTML5輸入和textareas有一個「佔位符」屬性。如果您準備放棄在舊瀏覽器上使用此文本,它將解決您的問題。 – zneak 2011-02-23 13:50:54

+0

@ 3nigma該聲明是一個鏈接,它帶來http://jsfiddle.net/Kyle_Sevenoaks/HLBGA/1/ – zneak 2011-02-23 13:51:22

回答

6

還有的$.contains功能和:contains選擇,但沒有jQuery.fn.contains。您正在尋找val在這裏,我相信:

$('textarea').focus(function(){ 
    var t = $(this); 

    if(t.val().indexOf('Skriv valg av headset her') !== -1) { 
     t.val(''); 
    } 
}); 

replaceWith也錯在這裏 - 如果這是工作(它不應該相信,因爲它可以是一個DOM元素或HTML文本)它會刪除textarea元素(最好用remove反正更好)

+0

太好了,謝謝:)我想我真的是以錯誤的方式去做。我不知道這是怎麼工作的,我會學到的:D – Kyle 2011-02-23 13:54:07

+0

+1'replacewith'(如果你有.contains語法的話)會很快樂地清除你的文本框,並用html中的空字符串替換它。 – guildsbounty 2011-02-23 14:06:03

0

試試這個:

//textarea 
$("textarea").focus(function(){ 
    var $this = $(this); // Always cache your selector 

    if ($this.contains('Skriv valg av headset her')) 
    { 
     $this.val(''); 
    } 
}); 
+0

不幸的是它沒有工作,加上方是至少jslint現在驗證代碼:) – Kyle 2011-02-23 13:52:42

+0

絕對檢查了第一個發佈的例子。他們正在使用應該工作的indexOf。 – Seth 2011-02-23 14:01:22

相關問題