我想知道,为什么更改一个元素的类(没有尝试过使用id),会使它对使用类集的函数没有响应?
实施例
js功能
function addImg(element) {
$(element).click(function() {
var $block = $(this).is('img') ? $(this).parent() : $(this);
var $name = $block.attr('id');
$('input[name="'+$name+'"]').click();
$('input[name="'+$name+'"]').change(function() {
$block.css('border-color', '#cecece')
readURL(this, $block);
});
});
}
DOM
<div class="has-img">
<a class="remove-image"> Remove Image </a>
<img src="blalbalba.jpg" />
</div>
js code
$('.remove-image').click(function() {
$(this).parent().removeClass('has-img').addClass('no-img').find('img').remove();
$(this).remove();
});
addImg('.has-img img, .no-img');
在.removeClass('has-img').addClass('no-img')
之后,addImg('.has-img img, .no-img');
函数不再适用于该元素。那是为什么?
答案 0 :(得分:5)
绑定仅适用于绑定事件时具有其中一个类的元素。试试这个:
$(document).on('click', '.has-img img, .no-img', function() {
var $block = $(this).is('img') ? $(this).parent() : $(this);
var $name = $block.attr('id');
$('input[name="'+$name+'"]').click();
$('input[name="'+$name+'"]').change(function() {
$block.css('border-color', '#cecece')
readURL(this, $block);
});
});
$(document).on('click', '.remove-image', function() {
$(this).parent().removeClass('has-img').addClass('no-img').find('img').remove();
$(this).remove();
});