使jquery函数跨多个表单工作.(将Jquery设为DRY)
Making jquery function to work across multiple forms. (Making Jquery DRY)
我创建了一个简单的js函数,从按钮onclick调用,直接执行一些操作,提交"选定"的数据并打开一个新的选项卡。这是一个单独的用例,在这个用例中效果很好。但现在,随着我在功能中编写越来越多的小部件(在同一DOM中显示不同工具的选项卡)。我发现保持干燥有点难。
我想将表单设置为具有相同的通用输入,通过表单id获取它是哪个表单,序列化并让控制器处理其余的。如果需要,知道表单id将允许某些表单出现一些异常。每次尝试都会让我把头撞在桌子上。为什么没有执行表单?如果我让一个表格起作用,为什么另一个表格不起作用?[与'.change类似的代码示例]我如何让这个理想的代码在所有表单中工作
旧代码:JS
function doaction(){
alert("I work perfectly");
}
HTML
<form id='form_w'>
<input type='hidden' name="action" />
<input type='text' name="term"></input>
<input type='button' onclick="doaction()"/>
</form>
理想代码:
jQuery
//$('form.results').submit(function(e){ //DIDNT WORK
$('.rbutton').click(function(e){ // NOT WORKING EITHER
alert("This alert doesnt exist");
var form_id = e.target.id;
// gather data
// submit data via ajax
// update the dom by adding another tab/widget.
});
HTML
<form id='form_tab_id1' class="results">
<input type='hidden' name="A_action" />
<input type='text' name="term"></input>
<input type='button' class='rbutton'/>
</form>
<form id='form_tab_id2' class="results">
<input type='hidden' name="A_action" />
<input type='text' name="term"></input>
<input type='button' class='rbutton'/>
</form>
<form id='form_tab_id3' class="results">
<input type='hidden' name="B_action" />
<input type='text' name="term"></input>
<input type='button' class='rbutton'/>
</form>
本质上,用户发布了一个解决方案。我为他做的事感到高兴。它为我指明了正确的方向。[无论出于何种原因,它都被删除了。但谢谢乔治。]
他的解决方案如下。
JQuery
$('.rbutton').click(function(){
var form = $(this).closest('form');
}
在处理了这么多变体之后,我的代码陷入了一个不稳定的代码集。老实说,我不知道该怎么做;JQuery是我的死对头。但知道乔治发布的代码应该有效,但事实并非如此,这让我发现了其他我没有考虑的因素。[在填充带有'.rbutton'元素的选项卡之前,我没有考虑代码的执行情况。]
帮助我使之成为更DRY原则的解决方案是以下JQuery;
JQuery
$(document).on('click','.rbutton',function(){
var form = $(this).closest('form');
// Actions that are needed to be performed
}
为什么这有帮助,或者至少在我的代码中,它将此函数绑定到类".rbutton"的任何元素,包括新实例。如上所述,这些按钮是在执行jQuery之后创建的;因此,基本上没有任何东西被绑定。下面将对新创建的元素进行绑定,就好像即使在代码执行之后,也有一个活动侦听器对文档进行额外的绑定一样。
- 在jquery中为显示/隐藏设置cookie
- jquery设置为使用参数运行
- js代码从jQuery转换为原生代码
- 将jQuery转换为用户脚本的普通Javascript时遇到问题
- jQuery:重构为函数
- 如何使用jquery更改为所需的日期格式
- 如何在jQuery中为asp:textbox生成onchange事件
- 如何将复选框设为只读?未禁用
- 将代码从jquery重写为javascript
- 如何在jquery中为object键创建一个工作变量以避免额外的代码
- 在jQuery中为同一类选择器分配不同的值
- 将下拉列表设为只读
- 我将如何在 jquery 中为 html5 视频制作一个 playTo() 函数
- jQuery条件为true,但它'it’’我没有犯
- jQuery没有为具有新id的新元素执行代码
- 将jquery转换为javascript,以便能够在greatemonkey上运行
- jQuery-用于检查是否有任何字段不为空,然后将所有字段设为必需字段的代码
- 如何将jQuery MultiSelect小部件设为只读
- 使jquery函数跨多个表单工作.(将Jquery设为DRY)
- 从Jquery滑块获取值并将其设为ID