我试图避免为不同的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。
感谢。
答案 0 :(得分:4)
您可以使用attribute starts with selector:
$('button[id^="submitter"]').click(...);
在click
函数中,您可以使用简单的字符串方法获取id
:
var uuid = this.id.slice(9),
newlocation = $('input[name="differentlocation'+uuid+'"]');
答案 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);
});
或者,您可以使用“属性开头”选择器,如Andy建议的那样。