【问题标题】:after trigger click, the next delegate didnt work触发点击后,下一个委托不起作用
【发布时间】:2012-05-10 06:47:44
【问题描述】:

我的 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 alert(2) 没有出现。它适用于任何其他浏览器。

【问题讨论】:

  • addbutton2吗?或 button2? 我在 HTML 中看不到 addbutton2
  • 对不起,我输入的 id 不正确。第二个按钮 id 是'addbutton2',但问题仍然出现
  • 我记得,问题是 IE(IE8 与 IE7 一样)并不总是能正确使用 jQuery 选择器。尝试使用类选择器('.')而不是 id 选择器('#')。如果它有效,则问题出在选择器上,您可以保留类选择器的使用或提出自己的选择器

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


【解决方案1】:

您缺少分号。

试试:

 alert(2);

您应该将 addbutton2 更改为 button2。没有这个,它甚至无法在 Chrome 中运行。 您触发的点击事件似乎没有在 IE 中触发。使用自定义事件应该可以解决它。例如:

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

然后绑定到'gogogo':

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

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

【讨论】:

  • 我之前只是打错了id。在IE上还是不行。你可以尝试在你的链接上运行代码。 alert(2) 仍然没有出现。
  • 你用的是什么版本的IE?
  • 我更新了答案。点击事件似乎在 IE 中引起了问题。
【解决方案2】:

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

效果很好:

<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 中的“更改”事件:

读取cmets到文档http://docs.jquery.com/Events/live

尝试改用livequery

【讨论】:

  • 我认为这是因为第一次点击触发。第二个点击触发器不再识别。我仍然不知道操纵它的最佳方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-02
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 2011-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多