Jquery将HTML元素传递给函数

时间:2010-03-15 20:37:32

标签: 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”传递我绑定的元素没有问题,但是无法弄清楚目标元素的语法。

任何帮助都将不胜感激 - 非常感谢!

2 个答案:

答案 0 :(得分:5)

这样称呼:

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

这只是一个字符串:)

如果该元素与另一个元素相关,则可以使其成为通用元素,例如,如果#destinationTitle始终位于下一个div,下一个表格单元格等中...始终位于相同的相对位置,你可以为所有键绑定使这个更清洁,如果你发布一些示例标记,我会告诉你如何。

答案 1 :(得分:1)

摆脱双引号。