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

时间:2014-07-23 13:49:59

标签: javascript jquery datatables

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

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

当用户点击<tr>内的任意位置时,我想打开一个名为videoInfo.html的新页面,理想情况下我想要抓取该行的第一个<td>中的数据。但是,这并不起作用,甚至没有记录任何内容以指示用户点击了一行。

我也在使用datatables API。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

我希望您使用ID为&#34; VIDEO_GRID&#34;的元素, 这就是为什么你喜欢使用如下,

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

但问题是你错过了ID之前的哈希,使用如下,

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

答案 1 :(得分:1)

您可以尝试使用此代码在新标签页中打开网址

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");
    })

如果您对此有任何疑问,请告知。 感谢

答案 2 :(得分:0)

<强>第一

我想这个表是基于json源代码或JavaScript数组构建的,换句话说它是动态注入的,因此在这种情况下你绝不应该使用$(selector).event(handler);而是使用$(document).on(event, selector, handler);

所以你的代码将是:

$(document).on('dblclick', "#VIDEO_GRID > tbody > tr", function (e) {
      // event handler here
});

有关详细信息,请参阅此宝贵的post.


<强>第二

我强烈建议您避免使用document作为变量名称,即使您的代码正在运行(我对此表示怀疑),使用此类名称作为参考也会非常混乱。


<强>第三

要将远程页面加载到td,您与draw函数无关,而是可以将 ajax 请求发送到相应的页面,然后将其注入进入td .html函数。

因此,通过将所有点放在一起,您将以这样的结尾结束:

$(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");
});
评论中提到了

post