缩短Javascript代码

时间:2011-02-11 15:53:23

标签: javascript jquery loops

对于my project我一直在努力。我有一段Javascript代码,它将文本插入到输入元素中,并且双击了它的标签。

$(document).ready(function() {
    $('#name-label').dblclick(function(){
        $("#name").val('[b][color="#FF0000"]Please Submit![/color][/b]');
    });
});

但我希望这段代码能够处理多个字段,而无需一遍又一遍地复制和粘贴代码。我希望插入的文本保持不变。

以下是我想使用的标签和输入ID:

标签/输入

name-label / name
image-label / image
quest-label / quest
price-label / price
ge-label / ge
halch-label / halch
lalch-label / lalch
details-label / details
examine-label / examine
location-label / location
stats-label / stats
keywords-label / keywords

5 个答案:

答案 0 :(得分:7)

$(document).ready(function() {
    $('label[id$="label"]').dblclick(function(){
        $('#' + this.id.split('-')[0]).val('[b][color="#FF0000"]Please Submit![/color][/b]');
    });
});

1 - 绑定ID为ending with'label'的所有元素。

2 - 由于您对ID属性遵循相同的约定,因此通过从单击的ID中提取第一个单词来找到正确的元素,并在前面添加“#”以形成ID选择器。

答案 1 :(得分:0)

创建element-id / object组合的映射,并将函数ptr附加到它。

答案 2 :(得分:0)

此代码采用点击的标签,并使用for属性查找要填充的相应<input>字段。

$(document).ready(function () {
    $("label").dblclick(function () {
        $("#" + $(this).attr("for")).val('[b][color="#FF0000"]Please Submit![/color][/b]');
    });
});

答案 3 :(得分:0)

类似的东西:

function insertSubmitString(label_id, id) {
    $('#' + label_id).dblclick(function(){
        $('#' + id).val('[b][color="#FF0000"]Please Submit![/color][/b]');
    });
};

function insertAllSubmitStrings() {
  insertSubmitString('name-label', 'name');
  insertSubmitString('image-label', 'image');
  insertSubmitString('quest-label', 'quest');
  // and so on
};

$(document).ready(insertAllSubmitStrings());

答案 4 :(得分:0)

$(document).ready(function() {
    $('label').dblclick(function(){
        var inp = $(this).attr('id').split('-');
        $("#"+inp[0]).val('[b][color="#FF0000"]Please Submit![/color][/b]');
    });
});