2012-11-10 70 views
1

嗨,大家好,我有这样的打开链接追加

<div class="todos-pedidos" title="/pedidos">See More</div> 

的情况。当点击这个div其扩大我的UL/LI与这个jQuery

$('.todos-pedidos').click(function() { 
$('#bloco-pedidos-andamento ul li:hidden:lt(2)').slideToggle(); 

if(! $('#bloco-pedidos-andamento ul li').is(':hidden')) 
    $('.todos-pedidos').html("<span class='todos-pedidos2'>See All</span>"); 
return false; 

时,有是没有更多的LI扩大按钮更改div文本

所以即时通讯尝试换后看到更多的文本如果访问者再次点击这个去一个url

我想这样的,但我认为有一些错误或冲突,该链接不开

$("span.todos-pedidos2").click(function(event){ 
    event.preventDefault(); 
    var link = $('.todos-pedidos').attr("title"); 
    location.href=link; 
}); 

感谢您的帮助

+0

您的开发人员控制台中是否有任何错误? –

+0

@ChrisHayes没有jquery erros,什么也没有发生。我尝试使用警报,但不工作。 – Alvaro

+0

而不是位置尝试window.location。你确定你指的是重定向的正确属性吗? – Rikki

回答

1

当你正在生成使用JavaScript的元素,你应该委派事件,来自元素或文档对象的静态父项之一。

$(".todos-pedidos").on('click', 'span.todos-pedidos2', function(event){ 
// or $(document).on('click', 'span.todos-pedidos2', function(event){ 
+0

谢谢你完美的工作。 – Alvaro

1

jQuery中的click方法用于始终存在的DOM元素。动态添加的元素应该使用on方法添加事件处理程序:

$("span.todos-pedidos2").on('click', function(event) { }); 
+0

但是,这是正确的,我们不知道处理程序的分配在哪里。如果是在追加元素后,代码将会正常工作,因为您已经知道了。另外我认为使用“live”更适合兼容性问题。 ;) – Rikki

+0

这不会委托事件。 @MohammadGoudarzi'live'已弃用。 _代码将正常工作,因为您已经知道__否,他将该元素附加到点击处理程序中,因此事件委派是必需的。 – undefined

+0

仍然不为我工作。 – Alvaro