Sam*_*Sam 12 javascript jquery clone
(function($) {
$.extend({
notify: function(options, duration) {
var defaults = {
inline: true,
href: '',
html: ''
};
var options = $.extend(defaults, options);
var body = $('body'),
container = $('<ul></ul>').attr('id', 'notification_area'),
wrapper = '<li class="notification"></li>',
clone;
if (!body.hasClass('notifications_active')) {
body.append(container).addClass('notifications_active');
}
if (options.inline == true && options.href) {
clone = $(options.href).clone().wrap(wrapper);
}
clone.css('visibility', 'hidden').appendTo(container);
var clone_height = 0 - parseInt(clone.outerHeight());
clone.css('marginBottom', clone_height);
clone.animate({
marginBottom: 0
}, 'fast', function() {
clone.hide().css('visibility', 'visible').fadeIn('fast');
});
}
});
})(jQuery);
$(function() {
$('a').click(function() {
$.notify({
inline: true,
href: '#alert'
}, 3000)
})
})Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/sambenson/RmkEN/
在上面的例子中,我正在克隆一个元素并尝试用它包装,<li></li>但克隆根本没有被包装.
有什么想法吗?
Den*_*app 22
令人困惑的部分可能是你.wrap()返回内部元素,而不是父元素.
因此,您必须使用包装的父对象,如下所示:
var $divA= $("<div/>").addClass('classA'),
$divB= $("<div/>").addClass('classB');
console.log( $divA.wrap($divB).parent() );
Run Code Online (Sandbox Code Playgroud)
($divA.parent()等于$divB包装后)
所以关键部分是$divA.wrap($divB)返回$divA,不是$divB
看参考文献:
此方法返回用于链接目的的原始元素集.
请注意:元素不必在DOM中,jQuery可以在没有插入DOM的情况下对它们进行操作.
| 归档时间: |
|
| 查看次数: |
7676 次 |
| 最近记录: |