2012-08-27 56 views
0

我有一个链接(imp),当我点击这个链接时它显示一个div。 在这个div上有一个减号来减少这个div。 当我减少这个div时,我加了一个加号再次调出这个div。jQuery .click没有启动

问题出在加号上。

$('.plusStep1').click(function() { 
    $('#plus').empty(); 
    $('#step1').css('display','block'); 
    $(".close-step1 img") 
    .attr("src", "http://4.bp.blogspot.com/_0AyNA9sRlIs/TAPH55KDj7I/AAAAAAAAIsU/_fjn6O2WguQ/s1600/424px-OCR-A_char_Hyphen-Minus.svg.png"); 

上面的代码似乎只有当我在控制台中执行它的工作!

Here is a test on fiddle

+0

它在这里工作吗? Opera 12.01,你在用什么?你的JavaScript控制台中是否有错误? –

+0

真的吗?加号的点击是否有效? 没有错误,我在FF和Chrome中测试它。 – user472285

+0

对不起,只是使用imp链接:-)确实加号似乎有点buggy –

回答

0

.click()没有绑定到新创建的元素。你可以创建一个单独的功能,你想要做什么(在加点击),当您创建锚通话

bind('click', function() { 
    seperateFunction(); 
}) 

更新:对不起,更容易live应该做的伎俩(见jQuery doc

月2日更新:看到another stackoverflow post

+0

。活的作品。谢谢 – user472285

0

改变你的选择,以$('#plus').click(function() {因为加号没有个plusStep1类,但有ID plus

I saved the updated小提琴

1

.click上动态创建的元素好好尝试的工作,如果你要绑定的元素你DOM后创建函数加载你最好使用delegatehttp://api.jquery.com/delegate/

所以结合这函数的所有元素,不管是否在DOM之后创建,都可以使用类似的东西;

$("#myContainer").on("click", ".PlusStep1", function() { 
    $(this).toggleClass("chosen"); 
}); 

您所有的PlusStep1类元素的元素的儿童(或后代)与ID myContainer,即他们是在它里面,并没有多么深。

0

试试这个

jQuery(function($){ 

     // Get a reference to the container. 
     var containerStep1 = $("#step1"); 

     // Bind the link to toggle the slide. 
     $(".impaye").click(
     function(event){ 
     // Prevent the default event. 
     event.preventDefault(); 

     // Toggle the slide based on its current 
     // visibility. 
     if (containerStep1.is(":visible")){ 
     containerStep1.slideUp(1000); 
     } else { 
     containerStep1.slideDown(1000); 
     } 
     } 
     ); 


     // CLOSE STEPS 

     $(".close-step1 img").attr("src", "http://4.bp.blogspot.com/_0AyNA9sRlIs/TAPH55KDj7I/AAAAAAAAIsU/_fjn6O2WguQ/s1600/424px-OCR-A_char_Hyphen-Minus.svg.png"); 
     // STEP 1 
     $('.close-step1').click(function() { 
      $('#plus').empty(); 
      $('.close-step1').clone().appendTo('#plus'); 
      $('#plus .close-step1').addClass('plusStep1'); 

      containerStep1.slideToggle("slow", function() { 
       if ($("#step1").is(':visible')) { 
        $(".close-step1 img").attr("src", "http://4.bp.blogspot.com/_0AyNA9sRlIs/TAPH55KDj7I/AAAAAAAAIsU/_fjn6O2WguQ/s1600/424px-OCR-A_char_Hyphen-Minus.svg.png"); 
       } 
       else { 
        $(".close-step1 img").attr("src", "http://upload.wikimedia.org/wikipedia/commons/3/30/OCR-A_char_Plus_Sign.svg"); 
        $('.plusStep1').bind('click',plustep1); 
       } 

      }); 
     }); 
     function plustep1() { 
      $('#plus').empty(); 
      $('#step1').css('display','block'); 
      $(".close-step1 img").attr("src", "http://4.bp.blogspot.com/_0AyNA9sRlIs/TAPH55KDj7I/AAAAAAAAIsU/_fjn6O2WguQ/s1600/424px-OCR-A_char_Hyphen-Minus.svg.png"); 

     } 


     }); 
0

您还可以使用follwing

$('.plusStep1').live('click',function() { 

//---------Your Code---------- 
}) 

or 
$('.plusStep1').bind('click',function() { 
//---------Your Code---------- 
}) 
0

我认为你正在做比它需要这个更难。也许以这种方式尝试它会对你有用。

HTML

<a href="#" class="trigger">img</a> 

<div id="togglable" style="display:none;"> 
    <a href="#" class="trigger">Hide me</a> 
    content content content 
</div> 

JS

$(".trigger").click(function() { 
    $("#togglable").toggle(); 
}); 

然后你就可以添加一点逻辑的改变你的触发要素的src属性,将您+和 - 图像。

好处就是不需要活动绑定。