我目前有一个按钮的引导弹出窗口.仅当鼠标位于表的tr上时,弹出窗口才会显示.
我想要做的是能够访问该行的元素,这是可能的.
弹出代码:
$('.popup').popover(
{
placement: 'top',
trigger: 'manual',
delay: { show: 350, hide: 100 },
html: true,
content: $('#shortcuts').html(),
title: "Quick Tasks"
}
).parent().delegate('#quickDeleteBtn', 'click', function() {
alert($(this).closest('tr').children('td').text()); // ???
});
var timer,
popover_parent;
function hidePopover(elem) {
$(elem).popover('hide');
}
$('.popup').hover(
function() {
var self = this;
clearTimeout(timer);
$('.popover').hide(); //Hide any open popovers on other elements.
popover_parent = self
//$('.popup').attr("data-content","WOOHOOOO!");
$(self).popover('show');
},
function() {
var self = this;
timer = setTimeout(function(){hidePopover(self)},250);
});
$(document).on({
mouseenter: function() {
clearTimeout(timer);
},
mouseleave: function() {
var self = this;
timer = setTimeout(function(){hidePopover(popover_parent)},250);
}
}, '.popover');
HTML:
<div class="hide" id="shortcuts">
<a href="javascript:void(0);" id="quickDeleteBtn" class="btn btn-danger">Delete</a>
</div>
在行上实现popover的javascript:
rows += '<tr class="popup datarow" rel="popover">';
有谁知道我在这里做错了什么以及我应该如何访问我正在盘旋的tr的子元素?
JSFiddle:http://jsfiddle.net/C5BjY/8/
解决方法:
由于某种原因,我无法得到最接近()的工作.使用parent().parent()来获取包含.popover分隔符,然后使用prev()来获取前一个tr元素似乎可以解决问题.
只是改变:
alert($(this).closest('tr').children('td').text());
至:
alert($(this).parent().parent().prev('tr').children('td').text());
作为旁注,当您的小提琴使用jQuery 1.10.1时,您应该将delegate()更改为on()
:
on('click', '#quickDeleteBtn', function(index) { ... });