Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery与原型冲突_Jquery - Fatal编程技术网

Jquery与原型冲突

Jquery与原型冲突,jquery,Jquery,我在原型中使用了“lightbox”,在Jquery中使用了“导出到CSV”。目前,Prototype与Jquery库存在冲突。下面是导出函数的代码,第一个脚本是Jquery导出库,第二个脚本是Javascript 一旦添加'jQuery.noConflict();'在导出库的第1行中,导出功能不起作用。所以我的问题是如何让它们在同一个页面上工作 <script type="text/javascript"> jQuery.fn.table2CSV = functi

我在原型中使用了“lightbox”,在Jquery中使用了“导出到CSV”。目前,Prototype与Jquery库存在冲突。下面是导出函数的代码,第一个脚本是Jquery导出库第二个脚本是Javascript

一旦添加'jQuery.noConflict();'在导出库的第1行中,导出功能不起作用。所以我的问题是如何让它们在同一个页面上工作

    <script type="text/javascript">

    jQuery.fn.table2CSV = function(options) {
    var options = jQuery.extend({
        separator: ',',
        header: [],
        delivery: 'popup' // popup, value
    },
    options);


    var csvData = [];
    var headerArr = [];
    var el = this;

    //header
    var numCols = options.header.length;
    var tmpRow = []; // construct header avalible array

    if (numCols > 0) {
        for (var i = 0; i < numCols; i++) {
            tmpRow[tmpRow.length] = formatData(options.header[i]);
        }
    } else {
        $(el).filter(':visible').find('th').each(function() {
            if ($(this).css('display') != 'none') tmpRow[tmpRow.length] = formatData($(this).html());
        });
    }

    row2CSV(tmpRow);

    // actual data
    $(el).find('tr').each(function() {
        var tmpRow = [];
        $(this).filter(':visible').find('td').each(function() {
            if ($(this).css('display') != 'none') tmpRow[tmpRow.length] = formatData($(this).html());
        });
        row2CSV(tmpRow);
    });
    if (options.delivery == 'popup') {
        var mydata = csvData.join('\n');
        return popup(mydata);
    } else {
        var mydata = csvData.join('\n');
        return mydata;
    }

    function row2CSV(tmpRow) {
        var tmp = tmpRow.join('') // to remove any blank rows
        // alert(tmp);
        if (tmpRow.length > 0 && tmp != '') {
            var mystr = tmpRow.join(options.separator);
            csvData[csvData.length] = mystr;
        }
    }
    function formatData(input) {
        // replace " with “
        var regexp = new RegExp(/["]/g);
        var output = input.replace(regexp, "“");
        //HTML
        var regexp = new RegExp(/\<[^\<]+\>/g);
        var output = output.replace(regexp, "");
        if (output == "") return '';
        return '"' + output + '"';
    }
    function popup(data) {
        var generator = window.open('', 'csv', 'height=400,width=600');
        generator.document.write('<html><head><title>CSV</title>');
        generator.document.write('</head><body >');
        generator.document.write('<textArea cols=70 rows=15 wrap="off" >');
        generator.document.write(data);
        generator.document.write('</textArea>');
        generator.document.write('</body></html>');
        generator.document.close();
        return true;
    }
};
        </script>




        <script type="text/javascript">
        function getCSVData(){
            var csv_value=$('#insideTable5').table2CSV({delivery:'value'});
            $("#csv_text").val(csv_value);
        }
        </script>



        <input type="image" src="images/Excel.jpg" value="Get CSV File" onclick="getCSVData()"/>

        <table id='insideTable5' border='1'>
             .
             .
             .
        </table>

jQuery.fn.table2CSV=函数(选项){
var options=jQuery.extend({
分隔符:',',
标题:[],
传递:'弹出'//弹出,值
},
选择权);
var csvData=[];
var headerArr=[];
var el=这个;
//标题
var numCols=options.header.length;
var tmpRow=[];//构造头可用数组
如果(numCols>0){
对于(变量i=0;i0&&tmp!=''){
var mystr=tmpRow.join(options.separator);
csvData[csvData.length]=mystr;
}
}
函数格式化数据(输入){
//将“替换为”
var regexp=新的regexp(/[“]/g);
var output=input.replace(regexp,“”);
//HTML

var regexp=new regexp(/\如果将代码包装为:

(function( $ ){

    // CODE HERE

})( jQuery );
在没有冲突之后,它仍然可以工作。这将使
$
仍然是这个代码中的jquery,而不是它之外的jquery

然后在您自己的函数中,使用
jQuery
代替
$
,或者使用noConflict将其分配给不同的变量名

function getCSVData(){
    var csv_value=jQuery('#insideTable5').table2CSV({delivery:'value'});
    jQuery("#csv_text").val(csv_value);
}

不要只为两个功能加载两个框架并担心冲突,而是加载一个框架并使用它。您的用户可以下载的代码更少,您的JavaScript代码库将更易于扩展,更新将更容易,等等

JQuery有很多lightbox插件