j查询绑定单击不添加元素
jQuery bind click not adding elements
我有一个按钮,当我多次单击它时,它会添加上次单击的元素。 第一次通过它工作正常。 我们正在使用 jQuery 1.11.1。
$(function() {
$('a[name="generateReport"]').bind('click', function() {
$(this).attr('href', $(this).attr('href') + '?est=' + est.value + '&prodcd=' + prodcd.value + '&startDate=' + startDate.value + '&endDate=' + endDate.value + '&tracking=' + tracking.value);
})
})
我所看到的是,服务器过去的URL正在添加上次单击的字段。 这当然会在到达服务器时出现问题。 每次点击后是否需要清除?
这是从我们的Grails应用程序(2.4.3)调用它的代码
<g:link class="btn btn-primary" name="generateReport" controller="generateTTLReport" action="renderOutput">
<i class="icon-print icon-white"></i>
Generate Report
</g:link>
谢谢
汤姆
在 "?" 处拆分当前 href 以删除查询字符串参数。另外,让 jQuery 构建新的查询字符串参数字符串。
$(function() {
$('a[name="generateReport"]').on('click', function() {
var $this = $(this),
path = $this.attr('href').split('?')[0],
params = {
est: est.value,
prodcd: prodcd.value,
startDate: startDate.value,
endDate: endDate.value,
tracking: tracking.value
},
href = [path, $.param(params)].join('?');
$this.attr('href', href);
});
});
代码的问题在于,每次单击该按钮时,都会调用bind
回调。因此,当您第一次单击时,它获得了href
属性添加了一些参数并替换了它。同样,当您第二次单击它时,它会做同样的事情。它获取 href
属性,该属性现在包含来自先前更新的参数,然后替换现有的参数。如果保持 href 不变,并且只更新查询参数,则可以将其定义为全局变量并在事件处理程序中使用它
您可以在脚本中将该链接硬编码为变量,如下所示
$(function() {
// define your variable within document.ready but outside your event handler
var reportURL = '/LSRTIS/generateTTLReport/renderOutput';
$('a[name="generateReport"]').bind('click', function() {
var urlWithParams = reportURL + '?est=' + est.value + '&prodcd=' + prodcd.value + '&startDate=' + startDate.value + '&endDate=' + endDate.value + '&tracking=' + tracking.value;
$(this).attr('href', urlWithParams );
});
});
希望这对:)有所帮助
相关文章:
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 如何使用jquery遍历具有动态添加元素的数组
- jQuery appendTo 替换元素而不是添加元素,如果正在添加的元素预先存在于列表中
- 如何使用jquery添加元素
- 动态添加元素上的 HammerJS
- CSS没有'使用javascript向页面动态添加元素时无法工作
- 使用Javascript在DOM元素中添加元素
- 在添加元素时激发JS事件
- 什么's是在IE8+中添加元素的最有效方法
- d3.js在添加元素时协调
- 使用路由器链接动态添加元素
- 动态添加元素
- 在页面内容完全加载后,使用jQuery在DOM中添加元素
- j查询绑定单击不添加元素
- 在循环 jQuery 上添加元素
- 从一个页面调用 javascript 函数以在第二个页面上添加元素
- 页面加载后向<正文>添加元素时出现问题
- 动态添加元素时刷新 HTML
- 动态添加元素时不触发 JQuery 事件
- 如何使用 JavaScript 获取动态添加元素的宽度