Merging JQuery & Javascript

Merging JQuery & Javascript

本文关键字:Javascript amp JQuery Merging      更新时间:2023-09-26

当点击输入时,我正在使用一些JavaScript来复制值。这很有效。通常我会发出JavaScript警报,但现在我想使用查询渐变div。

如果我在单独的脚本中运行jquery或javascript,那么它们工作得很好,一旦我加入它们,它们就会失败。

我想这是因为我对副本使用了onMouseOver,但对淡入警报使用了输入点击事件。

知道我该如何合并这些吗?

<script language="JavaScript">
        function toClip(me,vals) {
                var clip = new ZeroClipboard.Client();
                clip.setHandCursor( true );
                clip.setText(vals);
                clip.glue(me);
        }
</script>
<script  type="text/javascript">
    $(document).ready(function() {
$('input').click(function() {
    $messageCont = $('<div class="message_cont">');
    $message = $('<div>DONE</div>').hide();
    $messageCont.append($message);
    $('body').prepend($messageCont);
    $messageCont.css({
    "left" : $(this).offset().left,
    "top" : $(this).offset().top
    });
    $message.fadeIn(200, function() {
        setTimeout(function(){
            $messageCont.fadeOut();
            //code to clean up container
        }, 1500)
    })
 })
});
$messageCont.css({
    "left" : $(this).offset().left,
    "top" : $(this).offset().top
});
</script>

这是通过调用的

<div class='copy' onmouseOver="toClip(this,'$val')"><input type="button" value="Copy"/></div>

谢谢:(

4月15日更新:

使用jquery而不是Javascript实现了这一点。

<input type="button" id="copy_button" data-clipboard-text="Copy Me!" Value="Click ME">
<script src="js/ZeroClipboard.js"></script>
<script>
var clip = new ZeroClipboard( document.getElementById("copy_button"), {
  moviePath: "js/ZeroClipboard.swf"
} );
clip.on( 'complete', function(client, args) {
var $message = $('<div class="message">DONE</div>').hide();
var $messageCont = $('<div class="message_cont" />').append($message).prependTo('body');
$messageCont.css({
   "left" : $(this).offset().left,
   "top" : $(this).offset().top
}).find("div.message").fadeIn(200).delay(1500).fadeOut(function() {
        });
   } );
</script>

我唯一的问题是它只适用于按钮。我有很多我想和它一起工作。有人知道如何解决这个问题吗?

感谢:(

几点:

  • 新的$messageCont/$message可能不需要在每次单击输入时创建?代码的其余部分建议重用。

  • $messageCont = ...表达式的HTML不完整。您必须确保div标记已关闭,无论是使用<div>...</div>还是使用<div />

  • 脚本在$message中淡入,但在$messageCont中淡出。这在第一次使用时是可以的,但您随后会看到精确的nada;没有使CCD_ 7褪色的表达。

  • 使用.delay()可以实现动画队列中的延迟,这比使用setTimeout()更干净。

  • $messageCont在其内容显示之前被定位时,很难看出第二个$messageCont.css(...)表达式应该实现什么。如果最初需要定位$messageCont,那么最好使用样式表指令,或者在$(document(.ready(function(({…}(结构中的jQuery中进行定位。

从字里行间看,我想你可能想要更像这样的东西:

$(document).ready(function() {
    var $message = $('<div class="message">DONE</div>').hide();
    var $messageCont = $('<div class="message_cont" />').append($message).prependTo('body');
    $('input').on('click', function() {
        $messageCont.css({
            "left" : $(this).offset().left,
            "top" : $(this).offset().top
        }).find("div.message").fadeIn(200).delay(1500).fadeOut(function() {
            //code to clean up container
        });
    });
});