m_Orchestrate learning system---三十四、使用重定义了$的插件的时候最容易出现的问题是什么

一、总结

一句话总结:如下面这段代码,定义了$的值,还是会习惯性的把$当成jQuery来用,所以难免出错

使用重定义了$的插件的时候最容易出现的问题是什么,比如gojs做mindmap的时候

$ 替换 冲突
var $ = go.GraphObject.make;
<script>
$(function () {
//console.log('1111111111');
gojs_init();
gojs_load();
});
</script>

最好的方式是把这个插件(比如这里是go.js)中的$替换成别的,比如$$、Go、$go

var $go = go.GraphObject.make;

这样就互相不冲突了

1、js的onload()是什么,对div有效么?

加载完成 $(); div 无效
<body onload="gojs_init()">

onload 事件会在页面或图像加载完成后立即发生。

支持该事件的 HTML 标签:

<body>, <frame>, <frameset>, <iframe>, <img>, <link>, <script>

支持该事件的 JavaScript 对象:

image, layer, window

div并不在支持之列

和jquery的$();的作用是一样的

2、使用重定义了$的插件的时候最容易出现的问题是什么,比如gojs做mindmap的时候?

$ 替换 冲突

如下面这段代码,定义了$的值,还是会习惯性的把$当成jQuery来用,所以难免出错

var $ = go.GraphObject.make;
<script>
$(function () {
//console.log('1111111111');
gojs_init();
gojs_load();
});
</script>

最好的方式是把这个插件(比如这里是go.js)中的$替换成别的,比如$$、Go、$go

var $go = go.GraphObject.make;

这样就互相不冲突了

3、jq的$(function(){})与window.onload的区别?

ready 先 onload 覆盖
最近一直在研究jq的源码,书写jq的代码我们通常会包裹在一个$(function(){})函数中,
jq的$(function(){})也就是$(document).ready(function(){})的简写,与之对应的原生js的window.onload事件,这俩者之间到底有什么区别呢?
$(function () {
console.log("ready执行");
}); $(function() {
console.log("ready1执行");
}); window.onload = function () {
console.log('load执行');
};
window.onload = function () {
console.log('load1执行');
}

我们来看一下控制台中输出的结果: 

这里可以看出两点不同: 
1.$(function(){})不会被覆盖,而window.onload会被覆盖,个人感觉$(function(){})不会被覆盖的原因是将其放入到了一个队列中,在对应时机一次出队。 
2. $(function(){})window.onload执行前执行的,$(function(){})类似于原生js中的DOMContentLoaded事件,在DOM加载完毕后,页面全部内容(如图片等)完全加载完毕前被执行。而window.onload会在页面资源全部加载完毕后才会执行。

DOM文档加载步骤: 
1.解析HTML结构 
2.加载外部的脚本和样式文件 
3.解析并执行脚本代码 
4.执行$(function(){})内对应代码 
5.加载图片等二进制资源 
6.页面加载完毕,执行window.onload

 

4、查找一个元素的父亲1在他父亲2中的索引?

index()

直接找到这个父亲1,然后找到这个父亲1在同辈中的索引即可

$('li').index(document.getElementById('bar')); //1,传递一个DOM对象,返回这个对象在原先集合中的索引位置
$('li').index($('#bar')); //1,传递一个jQuery对象
$('li').index($('li:gt(0)')); //1,传递一组jQuery对象,返回这个对象中第一个元素在原先集合中的索引位置
$('#bar').index('li'); //1,传递一个选择器,返回#bar在所有li中的索引位置
$('#bar').index(); //1,不传递参数,返回这个元素在同辈中的索引位置。

5、php將字符串變成json數據格式,便于与js通讯?

json_encode
//將字符串變成json數據
$array_data=explode(',',$data['arg_column_fields']);
$data['arg_column_fields']=json_encode($array_data);

6、一个页面要多次调用同一个插件,这个插件的各种函数应该怎么写?

函数 参数 对象

应该向函数传递参数,告诉这个函数当前我操作的是哪个对象

比如拿table来说,那你的函数应该指明表名

如下面的例子,应该向function mef_delete_column()中添加一个当前操作的table的id这个参数

     //刪除列
function mef_delete_column() {
$('#{$mindmup_editabletable_name} .mef_option_column .mef_option_column_delete').click(function (event) {
//找到所屬的當前表格
var table_id=$(this).parents('.mindmup_editabletable_fry').attr('id');
//console.log(table_id);
//找到列號索引
let now_th=$(this).parents('th').eq(0);
var column_num=now_th.index();
//所有的行都需要在指定位置刪除這個單元格
$('.'+table_id+' tr').each(function (index) {
//複製出一個有事件單元格出來
$(this).children('td').eq(column_num).remove();
});
//表頭也要刪除
$('#'+table_id+' tr:first th').eq(column_num).remove();
event.stopPropagation();
});
}
mef_delete_column();

7、写js插件和使用js插件的时候要注意什么?

解耦 赋值

注意js插件和php插件的解耦

下面的代码就使php代码和js代码解耦了,而不是把php代码写进js的函数里面

而是像第四行,将php代码的值赋值给某个js变量就行了

 <!-- 可編輯表格的插入刪除行列的js -->
<script>
//事件中加上id避免一個頁面多個插件的時候點擊一次事件執行多次
var mef_table_id_="{$mindmup_editabletable_name}";
//添加行
function mef_add_row(mef_table_id){
$('#'+mef_table_id+' .mef_option_row .mef_option_row_add').click(function (event) {
//找到所屬的當前表格
let table_id=$(this).parents('.mindmup_editabletable_fry').attr('id');
console.log(table_id);
//找到要複製的行的內容
let clone_line=$('#'+table_id+'_model tr:first').clone(true);
//找到當前行的行號(不需要找到當前行號,找到行后在直接在行后添加即可)
let row=$(this).parents('tr').eq(0);
//console.log(row);
row.after(clone_line);
//console.log('1111');
event.stopPropagation();
});
}
mef_add_row(mef_table_id_);
//添加列
............................... </script>
<!--END 可編輯表格的插入刪除行列的js -->

8、php变量向js变量传值时候的技巧?

字符串 引号 json

如果是字符串,可以带引号

如果是json格式数据,不能带引号

 <!-- 可編輯表格的插入刪除行列的js -->
<script>
var mef_table_id_="{$mindmup_editabletable_name}";
var mef_column_fields={$mindmup_editabletable_init_column_fields};
var mef_data={$mindmup_editabletable_init_data};

9、js如何创建数组?

new Array()

js和java中一样,一切皆对象

数组对象用来在单独的变量名中存储一系列的值。

我们使用关键词 new 来创建数组对象。下面的代码定义了一个名为 myArray 的数组对象:

var myArray=new Array()

有两种向数组赋值的方法(你可以添加任意多的值,就像你可以定义你需要的任意多的变量一样)。

1:

var mycars=new Array()
mycars[0]="Saab"
mycars[1]="Volvo"
mycars[2]="BMW"

也可以使用一个整数自变量来控制数组的容量:

var mycars=new Array(3)
mycars[0]="Saab"
mycars[1]="Volvo"
mycars[2]="BMW"

2:

var mycars=new Array("Saab","Volvo","BMW")

注意:如果你需要在数组内指定数值或者逻辑值,那么变量类型应该是数值变量或者布尔变量,而不是字符变量。

10、js中如何创建多维数组?

new Array() new Array()

一、二维数组的表示

  myarray[][]

二、二维数组的定义

    方法一:var a = new Array();a[i] = new Array();

1
2
3
4
5
6
7
var a = new Array();
            for(var i=0;i<3;i++){        //一维长度为3
                a[i] = new Array();
                for(var j=0;j<5;j++){    //二维长度为5
                    a[i][j] = i+j;
                }
            }

    方法二:

1
var a = [[1,2,3],[2,3,4]];

三、赋值

1
myarr[1][2] = 5;    //1表示第二行    ;2表示第3列

四、多维数组与二维数组类似

二、内容在总结中

 

m_Orchestrate learning system---三十四、使用重定义了$的插件的时候最容易出现的问题是什么的更多相关文章

  1. Deep learning:三十四(用NN实现数据的降维)

    数据降维的重要性就不必说了,而用NN(神经网络)来对数据进行大量的降维是从2006开始的,这起源于2006年science上的一篇文章:reducing the dimensionality of d ...

  2. JAVA之旅(三十四)——自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫

    JAVA之旅(三十四)--自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫 我们接着来说网络编程,TCP 一.自定义服务端 我们直接写一个服务端,让本机去连接 ...

  3. Java进阶(三十四)Integer与int的种种比较你知道多少?

    Java进阶(三十四)Integer与int的种种比较你知道多少? 前言 如果面试官问Integer与int的区别:估计大多数人只会说到两点:Ingeter是int的包装类,注意是一个类:int的初值 ...

  4. 《手把手教你》系列技巧篇(三十四)-java+ selenium自动化测试-单选和多选按钮操作-中篇(详解教程)

    1.简介 今天这一篇宏哥主要是讲解一下,如何使用list容器来遍历单选按钮.大致两部分内容:一部分是宏哥在本地弄的一个小demo,另一部分,宏哥是利用JQueryUI网站里的单选按钮进行实战. 2.d ...

  5. COJ966 WZJ的数据结构(负三十四)

    WZJ的数据结构(负三十四) 难度级别:C: 运行时间限制:20000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 给一棵n个节点的树,请对于形如"u  ...

  6. NeHe OpenGL教程 第三十四课:地形

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  7. Deep learning:三十八(Stacked CNN简单介绍)

    http://www.cnblogs.com/tornadomeet/archive/2013/05/05/3061457.html 前言: 本节主要是来简单介绍下stacked CNN(深度卷积网络 ...

  8. Gradle 1.12用户指南翻译——第三十四章. JaCoCo 插件

    本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  9. SQL注入之Sqli-labs系列第三十四关(基于宽字符逃逸POST注入)和三十五关

    开始挑战第三十四关和第三十五关(Bypass add addslashes) 0x1查看源码 本关是post型的注入漏洞,同样的也是将post过来的内容进行了 ' \ 的处理. if(isset($_ ...

随机推荐

  1. 001-linux中特殊权限

  2. owl.carousel

    简介 Owl Carousel 是一个强大.实用但小巧的 jQuery 幻灯片插件,它具有一下特点: 兼容所有浏览器 支持响应式 支持 CSS3 过度 支持触摸事件 支持 JSON 及自定义 JSON ...

  3. redis和memcached相关

    应该选择哪一种缓存机制 redis相较于memcached更加年轻,功能更加强大. 对小型静态数据进行缓存处理,最具代表性的例子就是HTML代码片段.使用memcached所消耗内存更少. 其他情况下 ...

  4. EntityFramework包含作用

    System.Data.Entity.Infrastructure.DbQuery的引用需要加入上面那个包

  5. CQRS/ES框架调研

    1.Enode一个C#写的CQRS/ES框架,由汤雪华设计及实现,github上有相关源码,其个人博客上有详细的孵化.设计思路.版本迭代及最新的完善: 2.axon framwork,java编写,网 ...

  6. web前端----jQuery基础语法

    一.jQuery基础1.为什么要用jquery? 写起来简单,省事,开发效率高,兼容性好2.什么是jQuery? jQuery是一个兼容多浏览器的JavaScript库(类似python里面的模块)3 ...

  7. HCNP学习笔记之IP地址、子网掩码、网关的关系

      0x00 概述 网络管理中的IP地址.子网掩码和网关是每个网管必须要掌握的基础知识,只有掌握它,才能够真正理解TCP/IP协议的设置. 以下我们就来深入浅出地讲解什么是子网掩码. IP地址的结构 ...

  8. Python Web学习笔记之TCP的3次握手与4次挥手过程

    前言 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务.TCP提供一种面向连接的.可靠的字节流服务. 面向连接意味着两个使用TCP的应用(通常是一个客户和一个服 ...

  9. 20145127《java程序设计》第二周学习总结

    本周我又对java程序进行了更进一步的学习.相比与上一周的学习内容的宏观,这一周的所学更加的系统和调理明确. 本周是对java基础语法的学习.首先,我先是认识类型与变量. Java可区分为基本类型和类 ...

  10. cogs 2221. [SDOI2016 Round1] 数字配对

    ★★ 输入文件:pair.in 输出文件:pair.out 简单对比 时间限制:1 s 内存限制:128 MB [题目描述] 有 n 种数字,第 i 种数字是 ai.有 bi 个,权值是 ci. 若两 ...