0

我想最小化这段代码:

$('#thistext0').keyup(function(e){
      var keyed = $(this).val();
      $("#target").html(keyed);
 });
$('#thistext1').keyup(function(e){
      var keyed = $(this).val();
      $("#target").html(keyed);
 });
$('#thistext2').keyup(function(e){
      var keyed = $(this).val();
      $("#target").html(keyed);
 });
$('#thistext3').keyup(function(e){
      var keyed = $(this).val();
      $("#target").html(keyed);
 });

在 JS 中可能有这样的事情吗?

$('#thistext[i]').keyup(function(e){
      var keyed = $(this).val();
      $("#target").html(keyed);
 });

如果是这样,怎么做?

编辑: 我不能使用类,因为我用 PHP 循环记录的方式,我必须使用 ID

4

3 回答 3

6

可以使用startswith 选择器,或使用通用类名。

$("[id^='thistext']").keyup(function(e){
      var keyed = $(this).val();
      $("#target").html(keyed);
 });

在使用 startwith 选择器时,提供一个父容器作为安全上下文,即$("[id^='thistext']", 'container')

还要记住,这将比本机 id 或类选择器慢,因为这是一个属性选择器。

属性以选择器开始

因此,我相信为所有这些文本框提供一个通用的类名并选择然后使用 classSelector 将是理想的。

于 2013-06-24T18:32:31.070 回答
3

不,但这是可能的:

$('#thistext0, #thistext1, #thistext2, #thistext3').keyup(function(e){
      var keyed = $(this).val();
      $("#target").html(keyed);
});

当然,选择器字符串可以循环创建。或者只是在您的输入字段中添加一个类,然后按类选择。

于 2013-06-24T18:31:26.473 回答
2

使用jQuery 的以属性选择器开头:

$('[id^="thistext"]').keyup(function(e){
      var keyed = $(this).val();
      $("#target").html(keyed);
});
于 2013-06-24T18:33:20.863 回答