选择具有相似ID的多个元素

时间:2013-06-24 18:30:43

标签: jquery jquery-selectors

我想尽量减少这段代码:

$('#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

3 个答案:

答案 0 :(得分:6)

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

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

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

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

<强> attribute-starts-with-selector

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

答案 1 :(得分:3)

不,但这是可能的:

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

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

答案 2 :(得分:2)

使用 jQuery's starts with 属性选择器:

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