触发单击后,下一个委托不起作用

时间:2012-05-10 06:47:44

标签: c# javascript jquery model-view-controller

我的html表格中有这个脚本

<button type="button" id="addUploadFile">Add Document</button>         
<input type="file" id="hiddenOpenFile" name="hiddenOpenFile" style="visibility:hidden;" />

<button type="button" id="button2">test</button>

和准备好功能的javascript脚本

$("#addUploadFile").live('click', function () {
      $('#hiddenOpenFile').trigger('click');
});

$("#hiddenOpenFile").live('change', function (event) {  
     alert(1);   
     $("#addbutton2").trigger('click');
});


$("#addbutton2").live('click', function () {
      alert(2)
});

问题是,当我选择任何文件时,Internet Explorer警报(2)没有出现。它在任何其他浏览器上都非常有用。

2 个答案:

答案 0 :(得分:1)

你错过了分号。

尝试:

 alert(2);

你应该将addbutton2更改为button2。没有它,它甚至不会在Chrome中运行。 您正在触发的单击事件似乎在IE中不会触发。使用自定义事件应该修复它。例如:

  $("#button2").trigger('gogogo');

然后绑定到'gogogo':

  $("#button2").on('gogogo', function () {
    alert(2);
  });

看到这个小提琴:http://jsfiddle.net/UfRUa/3/

答案 1 :(得分:0)

您应该将第二个按钮ID从button2更改为addbutton2 单击addUploadFile按钮后,文件上传器弹出apears。选择文件并关闭弹出窗口。在这种情况下,hiddenOpenFile的change事件将触发并在addbutton2的click事件之后

工作正常:

<html>
<head>
<script src="../libs/jquery/1.4.2/jquery.min.js"></script>
</head>
<body>
<button type="button" id="addUploadFile">Add Document</button>         
<input type="file" id="hiddenOpenFile" name="hiddenOpenFile" style="visibility:hidden;" />

<button type="button" id="addbutton2">test</button>
<script>
    $("#addUploadFile").live('click', function () {
          $('#hiddenOpenFile').trigger('click');
    });

    $("#hiddenOpenFile").live('change', function (event) {  
         alert(1);   
         $("#addbutton2").trigger('click');
    });


    $("#addbutton2").live('click', function () {
          alert(2);
    });
</script>
</body>
</html>

UPD:

据我所知$ .live()不支持IE中的“更改”事件:

阅读文档http://docs.jquery.com/Events/live

的评论

尝试使用livequery代替?