2 javascripts是冲突的

时间:2014-10-03 11:36:00

标签: javascript php jquery html

我有2个相互冲突的javascripts,较新的(Zeroclipboard)与较旧的(删除行)冲突,不会让删除行一个工作。我删除 zeroclipboard 的那一刻,删除工作。

尝试添加jQuery.noConflict();但似乎没有奏效。通过阅读一些解决方案,我决定删除$ sign,但仍然没有。

我有 files.php 文件,包括 header.php 文件。我在header.php中添加了 custom.js 文件,该文件包含许多用于整个项目操作的函数,包括删除行函数。然而,ZerClipboard的新脚本位于 files.php 本身。

较旧的一个,删除删除图标上的表格行点击,这在我添加下一个后不起作用:

custom.js

function deleteRow()
  {
    var current = window.event.srcElement;

    while ( (current = current.parentElement)  && current.tagName !="TR");
         current.parentElement.removeChild(current);
  }
$(document).ready(function()
    {
        $('table#delTable td a.delete').click(function()
        {
            if (confirm("Are you sure you want to delete?"))
            {
                var fid = $(this).parent().parent().attr('fid');
                var str=$(this).attr('rel');
                var data = 'fid=' + $(this).attr('rel') + '&uid=' + $(this).parent().attr('rel');   
                var deletethis = '#tr' + $(this).attr('rel');           
                var parent = $(this).parent().parent();
                $.ajax(
                {
                       type: "POST",
                       url: "delete.php",
                       data: data,
                       cache: false,

                       success: function(msg)
                       {
                            $(deletethis).fadeOut('slow', function() {$(this).remove();});
                       }
                });             
        }
    });
    $('table#delTable tr:odd').css('background',' #FFFFFF');
});

ZeroClipboard的JS和SWF,以及这个用于复制剪贴板上的一些文本的Share图标点击:

files.php

<script type="text/javascript" src="js/ZeroClipboard.js"></script>
<script language="JavaScript">

    var clip = null; 
    function $(id) { return document.getElementById(id); } 
   function init() 
   {
      clip = new ZeroClipboard.Client();
      clip.setHandCursor( true );
   } 
   function move_swf(ee)
   {    
      copything = document.getElementById(ee.id+"_text").value;
      clip.setText(copything); 
         if (clip.div)
         {    
            clip.receiveEvent('mouseout', null);
            clip.reposition(ee.id);         }
         else{ clip.glue(ee.id);   }  
         clip.receiveEvent('mouseover', null);  
   }    
</script>

我使用此博文来实现多个zerclipboard - http://blog.aajit.com/easy-multiple-copy-to-clipboard-by-zeroclipboard/ 而且,这是files.php页面生成的HTML源代码 - http://jpst.it/tlGU

2 个答案:

答案 0 :(得分:0)

删除第二个脚本的跟随函数定义:

function $(id) { return document.getElementById(id); }

由于这会在$上下文中重新定义window对象,因此当您在第一个脚本中使用$时,您不会使用jquery,而是您#39;重新使用新功能定义。

希望这有帮助,

答案 1 :(得分:0)

以下是使用noConflict()的方法:

function deleteRow()
  {
    var current = window.event.srcElement;

    while ( (current = current.parentElement)  && current.tagName !="TR");
         current.parentElement.removeChild(current);
  }

jQuery.noConflict(); // Reinitiating $ to its previous state
jQuery(document).ready(function($) // "Protected" jQuery code : $ is referencing jQuery inside this function, but not necessarily outside
    {
        $('table#delTable td a.delete').click(function()
        {
            if (confirm("Are you sure you want to delete?"))
            {
                var fid = $(this).parent().parent().attr('fid');
                var str=$(this).attr('rel');
                var data = 'fid=' + $(this).attr('rel') + '&uid=' + $(this).parent().attr('rel');   
                var deletethis = '#tr' + $(this).attr('rel');           
                var parent = $(this).parent().parent();
                $.ajax(
                {
                       type: "POST",
                       url: "delete.php",
                       data: data,
                       cache: false,

                       success: function(msg)
                       {
                            $(deletethis).fadeOut('slow', function() {$(this).remove();});
                       }
                });             
        }
    });
    $('table#delTable tr:odd').css('background',' #FFFFFF');
});

在files.php中:

<script src="js/ZeroClipboard.js"></script>
<script>

   var clip = null;

   function $(id) {
       return document.getElementById(id);
   }

   function init() {
       clip = new ZeroClipboard.Client();
       clip.setHandCursor(true);
   }

   function move_swf(ee) {
       copything = document.getElementById(ee.id + "_text").value;
       clip.setText(copything);
       if (clip.div) {
           clip.receiveEvent('mouseout', null);
           clip.reposition(ee.id);
       } else {
           clip.glue(ee.id);
       }
       clip.receiveEvent('mouseover', null);
   }
</script>