我有图像的列表,并在鼠标悬停时有选项框下它显示,这已内嵌码输入框,从复制。 现在我实现了zeroclipboard上,制作上点击复制功能的工作,所以,当我在图像做鼠标,它显示的选项框正常,但是当我把鼠标点击输入框复制代码,选项得到封闭,不再想它不是在选项DIV,因为zeroclipboard已经在它上面div中鼠标的推移它,它就会被关闭。
这样的解决方案是创建选项DIV,已照顾内部的DIV,但现在zeroclipboard格样式显示错误,我不知道如何解决它。
以下是zeroclipboar的风格,我不知道是什么风格就可以了设置,所以其上面的输入框,这样我就可以点击它,所以它工作正常,像它usally一样。
on line 107 in zeroclipboard.js
var style = this.div.style;
style.position = 'absolute';
style.left = '' + box.left + 'px';
style.top = '' + box.top + 'px';
style.width = '' + box.width + 'px';
style.height = '' + box.height + 'px';
style.zIndex = zIndex;
$("input[name='htmlcode'], input[name='directlink'], input[name='emaillink'], input[name='imgcode']").live('mouseover', function() {
clip = new ZeroClipboard.Client();
clip.setHandCursor( true );
clip.setText($(this).val());
var width = $(this).width();
var height = $(this).height()+10;
var flash_movie = '<div>'+clip.getHTML(width, height)+'</div>';
// make your own div with your own css property and not use clip.glue()
flash_movie = $(flash_movie).css({
position: 'relative',
marginBottom: -height,
width: width,
height: height,
zIndex: 101
})
.click(function() { // this puts copied indicator for showing its been copied!
$(this).next('input').indicator({className: 'copied', wrapTag: 'div', text: 'Copied!', fadeOut: 'slow', display: 'after'});
});
$(this).before(flash_movie); // if you want to put after and not before, then you have to change the marginBottom to marginTop
});
我不知道你的代码是什么样子,但是当你使用显示悬停或鼠标悬停/鼠标移开你的选择中,仅仅只包含零剪贴板格......这样的事情(我认为是使用正确的对象ID):
$('img.someimage, .optiondiv, #ZeroClipboardMovie_1').hover(function(){
$('.optiondiv')
// positioning stuff here
.show()
})
当我用零剪贴板中,我注意到,这是最好将它移到一个负左侧位置时,我并不需要它。 如:
#clipboardContainer {position:absolute; top:0; left:-1000px;}
我不太明白你的问题,但动态移动它远离它导致您的问题可能会为您解决问题的方式。
只要您的关注:
我的方法是使用数据属性激活复制功能。 除了它设置在根元素悬停&活动类。
用法:
HTML:
<button data-zc-copy-value="this is the text to copy">some text<button>
使用Javascript:
$(document).on('mouseover', '*[data-zc-copy-value]', function() {
var that = $(this),
width = that.outerWidth(),
height = that.outerHeight();
if(that.data("zc-activated") !== "true"){
// init new ZeroClipboard client
clip = new ZeroClipboard.Client();
clip.setHandCursor( true );
clip.setText(that.data('zc-copy-value'));
var flash_movie = '<div>'+clip.getHTML(width, height)+'</div>';
// make your own div with your own css property and not use clip.glue()
flash_movie = $(flash_movie).css({
position: 'relative',
marginBottom: -height,
width: width,
height: height,
zIndex: 101
});
// delegate mouse events
flash_movie.hover(function(){
that.addClass('hover');
},function(){
that.removeClass('hover');
});
flash_movie.mousedown(function(){
that.addClass('active');
});
flash_movie.mouseup(function(){
that.removeClass('active');
});
// add flash overlay
$(this).before(flash_movie); // if you want to put after and not before, then you have to change the marginBottom to marginTop
that.data("zc-activated", "true");
}
});