我有一个链接(imp),当我点击此链接时,它显示一个div。 在这个div上有一个减号来减少这个div。 当我减少这个div时,我会添加一个加号来重新启动这个div。
问题出在加号上。
$('.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");
以上代码似乎仅在我在控制台中执行时才有效!
答案 0 :(得分:1)
.click
对动态创建的元素不起作用,如果要将函数绑定到DOM加载后创建的元素,最好使用delegate
:http://api.jquery.com/delegate/ < / p>
所以要将这个函数绑定到所有元素,无论是否在DOM之后创建,你都可以使用类似的东西;
$("#myContainer").on("click", ".PlusStep1", function() {
$(this).toggleClass("chosen");
});
如果您的所有PlusStep1
类元素都是ID为myContainer
的元素的子元素(或后代),即它们位于其中,则无论多深都无关紧要。
答案 1 :(得分:0)
.click()
未绑定到新创建的元素。您可以创建一个单独的功能,它可以执行您想要的操作(在加号上)以及创建锚点调用时
bind('click', function() {
seperateFunction();
})
更新:抱歉,live
应该更轻松地执行此操作(请参阅jQuery doc)
第二次更新:见another stackoverflow post
答案 2 :(得分:0)
将您的选择器更改为$('#plus').click(function() {
,因为加号没有plusStep1
类,但标识为plus
答案 3 :(得分: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");
}
});
答案 4 :(得分:0)
您也可以使用以下
$('.plusStep1').live('click',function() {
//---------Your Code----------
})
or
$('.plusStep1').bind('click',function() {
//---------Your Code----------
})
答案 5 :(得分: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属性,以合并你的+和 - 图像。
好处是不需要实时绑定。