Javascript 具有非平凡HTML标记的jQuery事件委派?
我有两个DIV,第一个DIV中有一个链接,在其HREF属性()中包含第二个DIV的id 我想在用户单击第一个DIV时设置第二个DIV的动画-第一个DIV上的任意位置。我还想使用事件委派,因为我在一个页面上会有很多这样的“DIV对”(我使用的是本文中的一个JS片段) 如果用户单击DIV本身,它就会工作——只需检查firebug控制台输出。问题是,如果用户单击其中一个跨距或链接本身,它将不再工作 我如何概括单击处理程序来管理DIV中任何内容的单击 以下是JS:Javascript 具有非平凡HTML标记的jQuery事件委派?,javascript,jquery,Javascript,Jquery,我有两个DIV,第一个DIV中有一个链接,在其HREF属性()中包含第二个DIV的id 我想在用户单击第一个DIV时设置第二个DIV的动画-第一个DIV上的任意位置。我还想使用事件委派,因为我在一个页面上会有很多这样的“DIV对”(我使用的是本文中的一个JS片段) 如果用户单击DIV本身,它就会工作——只需检查firebug控制台输出。问题是,如果用户单击其中一个跨距或链接本身,它将不再工作 我如何概括单击处理程序来管理DIV中任何内容的单击 以下是JS: $('#a').click(funct
$('#a').click(function(e) {
var n = $(e.target)[0];
console.log(n);
if ( n && (n.nodeName.toUpperCase() == 'DIV') ) {
var id = $(n).find('a').attr('hash');
console.log(id);
$(id).slideToggle();
}
return false;
});
我花了很长时间才写出这个问题,所以我决定把它贴出来,也许有人会建议一个更好的方法 以下是我找到的解决方案():
这是我的解决办法。不确定这是否正是你想要的,但对我来说很有效
$(document).ready(function() {
$('#a').click(function() {
var a = $("a", this);
$(a[0].hash).slideToggle();
});
});
编辑:在IE7和Fx3中测试
编辑:那样的话
$(function() {
$("a.tab").click(function() {
$($(this).attr("hash")).slideToggle();
return false;
});
});
类似的方法可能会起作用(将tab类放在任何有div“附加”的对象上)。然而,我不确定,除非我真的看到一个例子。尽管如果您希望在单击跨度时使其工作,您可以将该类附加到跨度,并执行以下操作:
$(function() {
$("span.tab").click(function() {
var a = $("a",this);
$(a.attr("hash")).slideToggle();
});
});
不确定如果打开另一个div,是否希望关闭打开的div。如果这不能解决您的问题,那么您可以在jsbin上举一个例子,这会有所帮助。这看起来确实很简单!事实上,现在我有机会对它进行实际测试,它不会起作用,因为我在DIV中有多个链接,这就是事件委派的全部意义。当我看到这个并接受它作为正确答案时,我真的没有想过。所以,基本上在div#a中会有多个链接,但是其中只有一个具有另一个div的id?当你点击div#a中的任意位置时,你想让链接所指的div动画化吗?或者会有多个链接,并且每个链接都要为另一个div设置动画?在第一种情况下,将一个类添加到包含哈希的链接中,例如info,并将$(“a”,this)更改为$(“a.info”,this)Yes,后者:许多link DIV耦合,每个链接都会设置DIV的动画,该DIV的ID位于链接的HREF属性中(这就是为什么我首先使用它来创建链接和DIV之间的连接)。即使我为每个链接添加一个类,这也会获取容器中的所有链接,容器中有多个link-DIV对。
$(function() {
$("span.tab").click(function() {
var a = $("a",this);
$(a.attr("hash")).slideToggle();
});
});