jQuery事件don'注入html时无法工作
jQuery events don't work when html is injected
我有这样的东西:
function SetTableBehavior() {
$(".displayData tr").hover(function(e) {
$(this).children().addClass('displayDataMouseOver');
}, function () {
$(this).children().removeClass('displayDataMouseOver');
});
$(".displayData tr td").click(function(e) {
var rowsSel = $(".displayData .displayDataRowSelected");
for (var i = 0; i < rowsSel.length; i++) {
var rowSel = rowsSel[i];
$(rowSel).children().removeClass("displayDataRowSelected");
}
$(this).parent().addClass('displayDataRowSelected');
var p = $(this).parent();
p.children().addClass('displayDataRowSelected');
});
}
当表的主体被注入时,既不悬停也不点击工作。如果我使用
$(".displayData tr td").live('click',function(e) {
单击事件有效,但
$(".displayData tr").live('hover',function(e) {
不起作用
有什么解决方案可以让悬停工作。谢谢
它似乎是这样工作的:
function SetTableBehavior() {
$(".displayData tr").live('mouseenter', function (e) {
$(this).children().addClass('displayDataMouseOver');
}).live('mouseleave', function(e) {
$(this).children().removeClass('displayDataMouseOver');
});
$(".displayData tr td").live('click',function(e) {
var rowsSel = $(".displayData .displayDataRowSelected");
for (var i = 0; i < rowsSel.length; i++) {
var rowSel = rowsSel[i];
$(rowSel).children().removeClass("displayDataRowSelected");
}
$(this).parent().addClass('displayDataRowSelected');
var p = $(this).parent();
p.children().addClass('displayDataRowSelected');
});
}
$(".hoverme").live("mouseover mouseout", function(event) {
if ( event.type == "mouseover" ) {
// do something on mouseover
} else {
// do something on mouseout
}
});
从这里:http://api.jquery.com/live/
没有名为"悬停"的事件,因此您不能将其与live或bind一起使用。这只是jQuery为我们实现的一条"捷径"。
您不能将悬停与live
一起使用。您必须将其拆分为两个独立的事件侦听器:一个用于mouseenter
,另一个用于mouseleave
。
此外,在您的情况下,您不需要live
。使用性能更好的delegate
:
$(".displayData").delegate('tr', 'mouseeneter',function(e) {
$(this).children().addClass('displayDataMouseOver');
})
.delegate('tr', 'mouseleave',function(e) {
$(this).children().removeClass('displayDataMouseOver');
});
hover(a, b)
是mouseenter(a).mouseleave(b)
的快捷方式(它们本身就是bind('mouseenter', a).bind('mouseleave', b)
的快捷方式(,所以请尝试:
$(".displayData tr").live('mouseenter', function(e) {
// mouseenter handler
}).live('mouseleave', function (e) {
// mouseleave handler
});
有关更多信息,请参阅hover()
和live()
文档。
相关文章:
- 视频HTML没有'无法在Internet Explorer 11上工作
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- HTML标记在脚本标记中工作
- .html()不会'页面更改或刷新时无法工作
- 为什么jquery悬停在jsfiddle中可以工作,而在我的html布局中却不能
- ng绑定html不工作
- 如何让这个javascript var在HTML页面上工作
- HTML文件中的智能Javascript建议在Visual Studio代码更新后没有日志程序工作
- 带有Angular指令的HTML;附加时无法工作
- 如何使setTimeout脚本在html表单中正常工作
- Django,HTML,JS:<img src=“#">可以在HTML中工作,但不能在JS文件中工作
- ajax代码工作时,使用javascript禁用html中的链接
- 在html文件中添加了多个外部javascript,其中一个停止工作
- 当我移动引用three.js的html文件时,three.js停止工作
- ng-bind-html 工作,但抛出错误
- JavaScript代码很好,但网页预览只显示我的html工作
- 如何制作浮动HTML <工作
- 悬停不与Javascript, CSS和HTML工作
- .html工作,但文本不会在ajax请求后出现
- 不能让Angular sanitize / ng-bind-html工作