Jquery&变量ID名称

时间:2011-10-31 09:46:18

标签: jquery

我试图避免为不同的ID使用相同的代码。像submitter1,submitter2等的东西。在同一个过程中,变量也用于获取不同位置1,不同位置2等的输入框ID。有人可以帮我解决下面的代码吗?

$(document).ready(function() {

    $('#submitter<--Variable Here-->').click(function(event) {
        event.preventDefault();
        var newlocation = $("input[name=differentlocation"<--Same Variable Here-->"']");
        alert(newlocation); //testing purposes
        //$('#location').val(newlocation).change(); //Changes location input box
        //$("#submit").click(); //submits new location

    });
});

此代码使用静态ID,但就像我说的,我想调整它以使用变量ID。

感谢。

4 个答案:

答案 0 :(得分:4)

您可以使用attribute starts with selector

$('button[id^="submitter"]').click(...);

click函数中,您可以使用简单的字符串方法获取id

var uuid = this.id.slice(9),
    newlocation = $('input[name="differentlocation'+uuid+'"]');

工作演示:http://jsfiddle.net/wy8X9/

答案 1 :(得分:1)

正确的解决方案是使用类而不是ID,因为多个元素可以具有相同的类。要使用相同的变量部分引用输入,您可以使用(部分)ID或更好的数据字段(HTML中为data-whatever="...",JS中为$(elem).data('whatever')

答案 2 :(得分:1)

将ID设置为data-id并将其指向此

<tag class="submitter" data-id="n">

$('.submitter').click(function(){
  id = $(this).attr('data-id');
var newlocation = $("input[name=differentlocation"+id+"']");
})

答案 3 :(得分:1)

在做一些你想分享的事情时,我建议你根据一个共同的班级名称来关联偶数。

您可以阅读this.id以获取事件目标的ID并在那里进行操作。

$('.submitter').click(function(e) {
    e.preventDefault();
    var numId = this.id.replace(/[^0-9]+/, ''),
        newlocationId = "input[name=differentlocation" + numId+ "']";

    alert(newlocationId);
});

示例:http://jsfiddle.net/qud32/

或者,您可以使用“属性开头”选择器,如Andy建议的那样。