Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中使用dblclick事件打开新页面_Javascript_Jquery_Datatables - Fatal编程技术网

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

在javascript中使用dblclick事件打开新页面,javascript,jquery,datatables,Javascript,Jquery,Datatables,在my pageSetUp()函数中,我有以下代码片段: $("#VIDEO_GRID > tbody > tr").dblclick(function (e) { $(e.currentTarget.find("td;first")); document.draw("videoInfo.html"); console.log("double clicked"); }) 当用户单击中的任意位置时,我想打开一个名为videoInfo

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

    $("#VIDEO_GRID > tbody > tr").dblclick(function (e) {
      $(e.currentTarget.find("td;first"));
      document.draw("videoInfo.html");
      console.log("double clicked");
    })
当用户单击
中的任意位置时,我想打开一个名为videoInfo.html的新页面,理想情况下,我想获取该行第一个
中的数据。但是,这不起作用,甚至没有任何东西被注销以表明用户单击了某一行

我也在使用datatables API


有什么建议吗?

我希望您使用ID为“VIDEO\u GRID”的元素, 这就是为什么你喜欢用下面的方法

$("VIDEO_GRID > tbody > tr").dblclick(function(){
//Code here
});
$("#VIDEO_GRID > tbody > tr").dblclick(function(){
//Code here
});
但问题是你错过了ID前的散列,使用如下

$("VIDEO_GRID > tbody > tr").dblclick(function(){
//Code here
});
$("#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");
    })
请告诉我你对此有什么问题。 首先谢谢你

我猜该表是基于json源代码或JavaScript数组构建的,换句话说,它是动态注入的,因此在这种情况下,您不应该使用
$(选择器).event(处理程序)$(文档).on(事件、选择器、处理程序)

因此,您的代码将是:

$(document).on('dblclick', "#VIDEO_GRID > tbody > tr", function (e) {
      // event handler here
});
欲了解更多信息,请参阅本指南


我强烈建议您避免使用
document
作为变量名,即使您的代码正在工作(我对此表示怀疑),使用这样的名称作为引用也会让人感到非常困惑


第三

要将远程页面加载到
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");
});

注释中提到。

也发布html代码您是否有
单击
或在
dblclick
之前发生的其他事件的事件处理程序?如果是这样的话,它可能在某处()执行
stopPropagation
,并阻止dblclick注册。jQuery之所以这样做,有时是因为它处理这些事件的方式。什么是
VIDEO\u GRID
?它应该是
#视频网格
?或者
#
现在是可选的吗?什么是
document.draw()
?我找不到该函数的任何文档。下面是一些很好的答案。您的
pageSetUp()
函数肯定被调用了吗?我从未见过
窗口。在新选项卡中打开
open,据我所知,这仍然是不可能的:,无论如何,向上投票!我认为这是可行的尝试这个窗口;在控制台中,它对我有效:)不,它说弹出被阻止-P(因为它不是作为DOM事件的结果触发的)。当我允许弹出窗口时,它会在一个新窗口中打开。您已将浏览器配置为更喜欢新选项卡而不是新窗口。检查此链接,此操作正常。将文本粘贴到注释中时,文本已更改。叹气,是的。。。除非您的浏览器不是这样配置的。这是一个浏览器选项,不是JavaScript技巧<代码>窗口.打开
比选项卡式浏览器早存在很长时间。这是浏览器供应商/用户的偏好,而不是网站的偏好。(虽然在今天的浏览器中,打开具有特定尺寸的新窗口不会打开新选项卡,但我并不认为浏览器将来也可能决定不这样做)抱歉,我在原始代码中使用了磅符号,但仍然没有这样做:/