在javascript中使用dblclick事件打开一个新页面

Open a new page with dblclick event in javascript

本文关键字:新页面 一个 javascript 事件 dblclick      更新时间:2023-09-26

在我的pageSetUp()函数中,我有以下代码片段:

    $("#VIDEO_GRID > tbody > tr").dblclick(function (e) {
      $(e.currentTarget.find("td;first"));
      document.draw("videoInfo.html");
      console.log("double clicked");
    })

我想打开一个名为videoInfo.html的新页面,当用户单击<tr>内的任何地方,理想情况下,我想在该行的第一个<td>中获取数据。但是,这不起作用,甚至没有任何东西被注销以表明用户单击了一行。

我也在使用datatables API。

有什么建议吗?

我希望你使用ID为"VIDEO_GRID"的元素,这就是为什么你喜欢在下面使用like,

$("VIDEO_GRID > tbody > tr").dblclick(function(){
//Code here
});

但问题是你漏掉了ID前的哈希值,像下面这样使用

$("#VIDEO_GRID > tbody > tr").dblclick(function(){
//Code here
});

我试着用这段代码在新选项卡

中打开Url
function OpenInNewTab(url) {
  var win = window.open(url, '_blank');
  win.focus();
}

和你的代码中有错误试试这个代码:

$("#VIDEO_GRID > tbody > tr").dblclick(function (e) {
      OpenInNewTab("videoInfo.html");//replaced this code and using above function to laod make sure about the url
      alert("double clicked");
    })
如果您对此有任何问题,请告诉我。由于

First

我猜表是建立在json源或JavaScript数组,换句话说,它是动态注入的,所以在这种情况下,你不应该使用$(selector).event(handler);,而是$(document).on(event, selector, handler);

所以你的代码将是:
$(document).on('dblclick', "#VIDEO_GRID > tbody > tr", function (e) {
      // event handler here
});

更多信息请看这篇珍贵的文章。


第二

我强烈建议你避免使用document作为变量名,即使你的代码正常工作(我怀疑它),使用这样的名字作为引用也会很混乱。


3

要将远程页面加载到td中,您无需使用draw函数,而是可以使ajax请求到适当的页面,然后通过.html函数将其注入td

那么把所有的点放在一起,你就会得到这样的结尾:

$(document).on('dblclick', "#VIDEO_GRID > tbody > tr", function (e) {
      var me = this;
      request = $.ajax({
          url: 'videoInfo.html'
      });
      // closure used to avoid conflict see the post below for more information
      request.done((function(){
        var _that = me;
        return function(response){ _that.find('td:first').html(response); console.log('page loaded !');}
})());
      request.fail(function(){
        console.log('page not loaded :(');
      });
      console.log("double clicked");
});