我有一个小的javascript脚本,它遍历一组复选框,它们抓取name属性和值,然后将其转换为json。然后我使用该值设置元素的href,然后尝试触发点击。
出于某种原因,除了点击之外,一切似乎都能正常运行。我成功地更改了href,我在.click()之前和之后的console.log()一个值。除了点击之外,所有东西都会点击。 href中的url是我手动点击它的值。
我将我的脚本放在关闭正文标记之前,并将其包含在$(document).ready()
中。我没有重复的ID(我查看了要检查的渲染源)
有人能提供一些见解吗?
这是javascript
$(document).ready(function() {
$("#multiExport" ).on('click', function(e){
e.preventDefault();
var i = 0;
var list = new Array();
$('.appSelect:checked').each(function(){
var name = $(this).attr('name');
var id = $(this).val();
list[i] = new Array(name, id);
i++;
});
var serList = JSON.stringify(list);
console.log(serList);
var webRoot = $("#webRoot").text();
$("#exportLink").attr('href', webRoot+"/admin/admin_export_multiExport.php?emailList="+serList); //hits
console.log('1'); //hits
$("#exportLink").click(); //this line never executes
console.log('2'); //hits
});
});
答案 0 :(得分:3)
$(selector).click()
实际上不会按照用鼠标点击它的方式链接。如果这是你想要的,你应该从元素中解开jquery对象。
$(selector)[0].click();
否则,您所做的只是触发可能存在或不存在的事件处理程序。
答案 1 :(得分:2)
我猜你需要
$(document).on('click', '#multiExport', function(e){
(您可以用最近的元素替换文档,如果有的话)。
如果您需要动态点击事件绑定。
修改
我会尝试这样的事情:
$(document).ready(function() {
$("#exportLink").click(function() {
window.location = $(this).attr('href');
});
$("#multiExport" ).on('click', function(e){
//whatever you want
$('#exportLink').attr('href', 'something').trigger('click');
});
});
答案 2 :(得分:0)
$( “#exportLink”)点击(); //这会启动活动。
答案 3 :(得分:0)
我必须承认,我很惊讶.click()不起作用。
如果想要加载页面,那么替代方案是
$(function() {
$("#multiExport" ).on('click', function(e){
e.preventDefault();
var list = [];
$('.appSelect:checked').each(function(){
var name = $(this).attr('name');
var val = $(this).val();
list.push([name, val]);
});
var serList = JSON.stringify(list);
var webRoot = $("#webRoot").text();
location=webRoot+"/admin/admin_export_multiExport.php?emailList="+serList;
});
});