2017-02-23 65 views
0

我使用克隆命令动态创建新的HTML元素的ID /名称。该代码创建一个包含所有子项的新父项,并且每个子项都将获得一个新的名称和id(当前名称/ ID +1)。这工作正常,因为我发布表单时,会看到新的正确名称。得到一个JS创建的元素

在此,我使用的图像重定向从输入=文件中的点击,使输入=文件按钮定制。但是,目前,点击任何图片都会调用相同的原始文件=上传。

我需要知道文件=上传的ID /名称 - 无论是原件或克隆,但我似乎只能是越来越原来的名字,即使单击克隆。

这里是一个小提琴: https://jsfiddle.net/msith718/xfuv79b3/71/

$(document).on('click', '.uploadBtn', function(){ 
    alert(this.id); 
    }); 

点击+创建新的克隆,然后将图像,试图得到名称/ ID,其中被点击一个。它似乎永远是同一个名字。

感谢这么多的帮助。

回答

2

只是这一个取代你的警惕,如果你想与不断变化的ID父。

alert($(this).closest('.fingers').attr('id')); 
+0

更新的演示。这似乎工作。现在,我应该能够解析结果(finger2)来移除“手指”并留下“2”。然后我可以连接来调用点击“uploadBtnOld2”而不是“uploadBtnOld”...对吗?还是有更高效的方法? – msith718

2

这是因为您的ID创建代码是错误的。

你做

var regex = /^(.+?)(\d+)$/i; 
var id = this.id || ""; 
var match = id.match(regex) || []; 
if (match.length == 3) { 
    //snipped code 
} 

if中的代码永远不会执行该按钮,因为this.idimgButton所以正则表达式不匹配它,因为它预计它在数字结束。

的最简单的解决方案是添加0到第一按钮ID的末尾,从而使其imgButton0。您的代码将从此开始运行。在https://jsfiddle.net/xfuv79b3/76/

+0

这确实比较好。 –

+0

非常感谢你!我的JavaScript并不是最强大的,我把它们从我在各种场景中找到的代码中拉出来,这最后一部分让我疯狂。现在我想我明白了为什么。我有括号,因为那是我找到的代码中的内容。这似乎正是我所需要的。我应该能够点击正确的文件=上传。再一次,非常感谢你。 – msith718

+0

好的,所以还有一个问题。也许我可以让这更容易。我的计划是,一旦我知道图像的编号,我就会解析出图像的名称,并留下数字。然后将该数字连接到文件上传的ID并调用正确的数字。有没有一种方法可以获取与图像位于同一父级的文件上传的id(通过类?)? – msith718