2010-03-15 224 views
0

我有一個HTML表單,當用戶填充輸入字段時,我將從一系列輸入字段將值複製到某些跨度/標題。我可以使用下面的代碼得到這個工作:Jquery將HTML元素傳遞給函數

$('#source').keyup(function(){ 
    if($("#source").val().length == 0){ 
     $("#destinationTitle").text('Sample Title'); 
    }else{ 
     $("#destinationTitle").text($("#source").val()); 
    } 
    }); 

在上述情況下的HTML是一樣的東西:

樣品名稱

基本上,用戶填寫源框中,文本的內容將更改爲源輸入的值。如果沒有輸入任何內容,或者用戶刪除了輸入到框中的值,則會改爲放置一些默認文本。非常簡單。然而,因爲我需要爲許多不同的領域做這項工作,所以把它變成一個通用函數,然後將該函數綁定到每個onkeyup()事件上是有意義的。但我在這方面遇到了一些麻煩。我的實現:

function doStuff(source,target,defaultValue) { 

    if($(source).val().length == 0){ 
     $(target).text(defaultValue); 
    }else{ 
     $(target).text($(source).val()); 
    } 

} 

被稱爲如下:

$('#source').keyup(function() { 
      doStuff(this, '"#destinationTitle"', 'SampleTitle'); 
    }); 

我想不通的是如何傳遞的第二個參數,目標html元素到函數的名稱。我沒有問題通過「this」傳遞給我綁定的元素,但無法找出目標元素的語法。

任何幫助將不勝感激 - 非常感謝!

回答

5

這樣稱呼它:

$('#source').keyup(function() { 
     doStuff(this, '#destinationTitle', 'SampleTitle'); 
}); 

這只是一個字符串:)

如果元素相對於其他但是,你可以把它通用,例如,如果#destinationTitle總是在下一個div,下一個表格單元格等等......總是在相同的相對位置,如果你發佈了一些示例標記,我會告訴你如何做到這一點。

+0

嗨尼克, 多數民衆贊成在我的想法,我試過了:) - 但我怎麼然後參考它在我的功能?當我執行以下操作時,它似乎不起作用: 函數doStuff(source,target,defaultValue){ 如果($(source).val()。length == 0){的.text(默認值); (「'」+ target +「'」).text($(source).val());其他{ } } } – christian 2010-03-15 20:44:58

+0

爲什麼其他人得到特殊待遇?通常使用它'else {$(target).text(..)' – Anurag 2010-03-15 20:46:43

+0

@christian - 不確定else的語法是什麼,只是用作Anurag的語法,沒有額外的附加字符串。 – 2010-03-15 20:48:23

1

擺脫雙引號。

+1

投給另一個答案,他揍我了 – 2010-03-15 20:46:51

+0

aah my bad .. didn' t看到你很慢,現在就讓downvote你吧! – Anurag 2010-03-15 20:48:11

+0

哈哈,謝謝[額外的人物,所以我可以發表此評論] – 2010-03-15 20:51:17