我想尽量减少这段代码:
$('#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
答案 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);
});