在我的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。
有什么建议吗?
答案 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。