在重复表单上使用 jQUERY,随后会增加 ID
Posted
技术标签:
【中文标题】在重复表单上使用 jQUERY,随后会增加 ID【英文标题】:Use jQUERY on repeating Form, which increase ID subsequently 【发布时间】:2015-10-03 17:22:03 【问题描述】:我有一个前端表单,它在 WordPress 循环中编辑帖子。
这意味着,在某个页面上,我循环通过自定义帖子类型,并且对于每个返回的帖子,我呈现一个表单,它在循环中编辑帖子,而不是帖子本身。
这会为每个表单创建一个像这样的表单 ID:
循环中的第一个帖子:cred_form_1096_1 循环中的第二个帖子:cred_form_1096_2 循环中的第三种形式:cred_form_1096_3等等
表单的数量是动态的,因为它是一个循环,根据某些参数返回某些内容。 循环中可能只有 3 个表单,改天可能有 5 个,因为发布了一些新帖子。
当点击“提交”时,我使用这个 jQuery 通过 AJAX 发送表单:
jQuery(document).ready(function()
jQuery('#cred_form_1096_1').ajaxForm(function()
alert("Thank you for your comment!");
);
);
当然,以上仅适用于循环中的第一个表单,循环中的第二个表单和第三个等,我每次都需要手动调整 ID! (#cred_form_1096_2、#cred_form_1096_3 等)
有没有办法(例如)使用类似的东西:
#cred_form_1096_$
?
意思是,Form ID 中的最后一个数字应该根据 Loop 中的表单进行调整。
或者更好的是,它应该在最后一个位置“使用”任何数字 比如:cred_form_1096_any
如果是循环中的第一个表单,则使用 cred_form_1096_1,如果是第二个,则使用 cred_form_1096_2,以此类推
完全不确定这是否可以做到?
欢迎提出任何意见。
更新::
这里的第一个答案很有魅力,我相信其他人也一样!
jQuery(document).ready(function()
jQuery("[id^=cred_form_1096]").ajaxForm(function()
alert("Thank you for your comment!");
);
);
我现在用("[id^=PART_OF_ID]")
【问题讨论】:
您可以添加一个 CSS 类并在整个类中循环 好吧,我不确定我是否理解,不幸的是!抱歉,我是 JS/AJAX 等方面的初学者。我应该如何进行?在我的编辑表单中添加一个类(让我们说提交按钮),然后在 jQuery 中使用这个类作为#id? 用$(".cssClass")
你可以循环使用这个类的元素
【参考方案1】:
嗯,
您应该考虑使用属性选择器来实现这一点。
您可以定位 f.e. id 以 PART_OF_ID 开头的表单:
$("[id^=PART_OF_ID]").ajaxForm(function () ...
您还可以查找包含 (*=) 或以 ($=) 的 ID/类/类型 f.e. 的已知部分结尾的所有元素。
【讨论】:
五分钟后我会接受你的回答,并用解决方案更新我的问题(基于你的建议)谢谢 不客气 =) 在处理生成的标记时,这些选择器非常有用。 出于好奇,你能举一个你提到的两种可能性的例子吗? (寻找所有包含 (*=) 或以 ($=) ID/class/type fe 的已知部分结尾的元素)我不知道如何为这些实现代码,我相信它们会派上用场未来!! 我明白了,所有基本改变的是 id^、id$ 和 id*。完美,谢谢 好的,现在我可能过度使用了你的帮助,但也许你在这里有想法:[我现在只能以 90 分钟的形式发布 :(] 将尽快在此处更新。关于“如何在提交后显示帖子而不重新加载页面 (AJAX)"【参考方案2】:假设 i 是一个增量值。你可以这样做:
$('#cred_form_1096_'+i)
【讨论】:
出于某种奇怪的原因,这对我来说不起作用,尽管它会产生(逻辑)意义! 你的意思是,我必须先声明什么是“i”,然后按照你上面的方式使用它?所以,例如, i=1 ? 是的。上面的示例假设 i 已经有一个值,每次循环代码时都会增加。这可以简单地通过在循环开始之前定义 i 来实现,然后在循环内使用 i++。以上是关于在重复表单上使用 jQUERY,随后会增加 ID的主要内容,如果未能解决你的问题,请参考以下文章
jQuery 克隆表单增加 name、class、id、data-id ..etc 的所有属性
jquery miniui新增表单时,某一项值是动态增加的怎么实现