Jquery和变量ID名称
我试图避免为不同的ID使用相同的代码。 像submitter1,submitter2等的东西。在同一个过程中,变量也用于获取不同位置1,不同位置2等的输入框ID。有人可以帮我解决下面的代码吗?
$(document).ready(function() { $('#submitter').click(function(event) { event.preventDefault(); var newlocation = $("input[name=differentlocation""']"); alert(newlocation); //testing purposes //$('#location').val(newlocation).change(); //Changes location input box //$("#submit").click(); //submits new location }); });
这段代码使用静态ID,但就像我说的那样我想调整它以使用变量id。
谢谢。
您可以使用属性starts with selector :
$('button[id^="submitter"]').click(...);
在click
函数中,您可以使用简单的字符串方法获取id
:
var uuid = this.id.slice(9), newlocation = $('input[name="differentlocation'+uuid+'"]');
工作演示: http : //jsfiddle.net/wy8X9/
正确的解决方案是使用类而不是ID,因为多个元素可以具有相同的类。 要使用相同的变量部分引用输入,您可以使用(部分)ID或更好的数据字段(HTML中的data-whatever="..."
, $(elem).data('whatever')
在JS)
将ID设置为data-id并将其指向这样
$('.submitter').click(function(){ id = $(this).attr('data-id'); var newlocation = $("input[name=differentlocation"+id+"']"); })
在做一些你想要分享的事情时,我建议你根据一个普通的class级名称来关联偶数。
您可以阅读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建议的“属性开头”选择器。