【问题标题】:Can't trigger click event on a link无法在链接上触发点击事件
【发布时间】:2013-06-27 22:18:27
【问题描述】:

我的问题是我生成了 2 个这样的 aspx 控件:

<a id="sortByDate" href="javascript:__doPostBack('sortByDate','')">Date</a>
<a id="sortByLastName" href="javascript:__doPostBack('sortByLastName','')">Last name</a>

所以这些链接允许您对结果进行排序。我试图把它放在一个组合框中,而不是使用链接。

所以我是这样设计的

<select id="sortBySelect" onchange="javascript:sortBy(this);">
       <option value="sortByLastName">Last name</option>
       <option value="sortByDate">Date</option>
</select>

使用这个 javascript 函数

function sortBy(sel) {
    var id = sel.value;
    $("#" + id).trigger("click");
}

因此,当您更改组合框中的选定元素时,我想触发链接上的单击事件以调用 dopostback 进行排序。

到目前为止它什么也没做。我尝试了“click”、“onclick”、“onClick”,但没有任何效果。不幸的是,这是针对 IE 怪癖模式的。

我知道,这真的不优雅,但我的时间真的很短,我需要一些快速而肮脏的东西。我最终会制作一个 aspx 控件来很好地处理这个问题。

有什么想法可以让我在 ie quirks 模式下完成这项工作吗?

谢谢

【问题讨论】:

  • console.log(id) - 获得价值了吗?这些锚点的点击处理程序在哪里?
  • 是的,我收到了警报。我得到了很好的身份证
  • 有 jsfiddle 的机会吗?
  • .trigger() 用于触发使用.on() afaik 创建的事件。
  • @ChrisG。好点..起初我用这个guahanweb.com/2010/03/02/…也许我应该回到它

标签: javascript jquery html internet-explorer quirks-mode


【解决方案1】:

尝试更改页面位置:

document.location = $("#" + id).attr('href');

【讨论】:

  • 这真的会触发回发吗,我不确定?
  • 这和点击链接的效果一样,所以是的
  • 这不是一次点击,而是一个 url 变化,没有什么可看的操作需求
  • @r043v 我没说是点击,我说的效果是一样的:url改变
  • @r043v 我用其他javascript代码测试过,它可以工作,__doPostBack是一个javascript函数
【解决方案2】:

你为什么不直接解雇__doPostBack

function sortBy(sel) {
    var id = sel.value;
    __doPostBack(id,'');   
}

【讨论】:

    【解决方案3】:

    用途:

    函数 sortBy(sel) { var id = sel.value; alert($("#" + id).length);//只是为了确认元素存在。 $("#" + id).click();}

    实际上,jQuery 只触发任何绑定到元素的事件。您正在尝试调用 href 操作。

    如果您不想更改标记,可以试试这个solution

    否则,您将不得不更改您的 html 标记以绑定 javascript 事件,然后尝试触发它。

    祝你好运!

    【讨论】:

      【解决方案4】:

      一切都按预期进行!

      JSFiddle proof.

      确保您有一个 id 为 sortByIdsortByLastName 的元素!


      JavaScript/jQuery

      ​​>
      $(document).ready(function(){
          $('#sortByDate').click(function(){
              alert('Sort By Date Click Event fired!');
          })
      });
      function sortBy(sel) {
          var id = sel.value;
          $("#" + id).trigger("click");
      }
      

      Alternative

      强制更改window.location

      JavaScript/jQuery

      ​​>
      function sortBy(sel) {
          var id = sel.value;
         window.location =  $("#" + id).attr('href');
      }
      

      注意:您不会在 JSFiddle 中看到任何变化:

      Refused to display 'https://www.google.ca/' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'. 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-18
        相关资源
        最近更新 更多