GVKun编程网logo

在jQuery 1.9删除.toggle(function,function)之后,可以使用什么替代方法?

21

如果您想了解在jQuery1.9删除.toggle和function,function之后,可以使用什么替代方法?的知识,那么本篇文章将是您的不二之选。我们将深入剖析在jQuery1.9删除.togg

如果您想了解在jQuery 1.9删除.togglefunction,function之后,可以使用什么替代方法?的知识,那么本篇文章将是您的不二之选。我们将深入剖析在jQuery 1.9删除.toggle的各个方面,并为您解答function,function之后,可以使用什么替代方法?的疑在这篇文章中,我们将为您介绍在jQuery 1.9删除.toggle的相关知识,同时也会详细的解释function,function之后,可以使用什么替代方法?的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

在jQuery 1.9删除.toggle(function,function)之后,可以使用什么替代方法?

在jQuery 1.9删除.toggle(function,function)之后,可以使用什么替代方法?

嗨,我正在尝试创建一些将在每次点击时交替缩小和增长的方法,但是我正在jQuery1.9为我的网站使用。该.toggle(function,function)函数已从中删除jQuery 1.9,因此我不确定要使用什么功能。

任何帮助都会很棒。

谢谢

这是我想进行切换的代码。基本上,我要切换的是一个div圈。

(function($){    $.fn.createToggle = function(size) {        var ele = $(this);        var oldSize = ele.width();        console.log("creating new toggle on element: " + ele + " old: " + oldSize + " new: " + size );        console.log("its content is" + ele.children(".content"));        var growfn = function() {            $(this).stop().animate({                ''width'': size+''px'',                ''height'': size+''px'',                ''margin-left'': ''-''+(size/2)+''px'',                ''margin-top'': ''-''+(size/2)+''px''            }, 500);            $(this).children(".content").toggle();        };        var shrinkfn = function() {            $(this).stop().animate({                ''width'': oldSize+''px'',                ''height'': oldSize+''px'',                ''margin-left'': ''-''+(oldSize/2)+''px'',                ''margin-top'': ''-''+(oldSize/2)+''px''            }, 500);            $(this).children(".content").toggle();        };        ele.click(function() {//insert code to toggle stuff        });    };})(jQuery);$(".home").createToggle(500);

和CSS:

.circleBase {    -webkit-border-radius: 999px;    -moz-border-radius: 999px;    border-radius: 999px;    behavior: url(PIE.htc);}.home {    width: 200px;    height: 200px;    background: #FF5032;    position: absolute;    top: 300px;    left: 300px;    margin-left: -100px;    margin-top: -100px;}.title {    position: relative;    padding-top: 10%;    text-align: center;    font-weight: bold;    font-size: 24px;}.content {    text-align: center;    display: none;}

和html:

<div>    <p>Glen Takahashi<p>    <p>THIS IS CONTENT<BR> THIS IS CONTENT<BR> THIS IS CONTENT<BR> THIS IS CONTENT<BR> THIS IS CONTENT</p></div>

答案1

小编典典

通过两种状态,您可以将当前的切换状态保持为布尔值(我使用clickState)。如果要具有多个状态,则可以继续向状态计数加1,然后检查总计数的模数,以确定应根据状态触发哪个函数。

我更新了您的代码,因为ele实际上是您要使用的jQuery对象

$(function () {} ); 与 ( function ($){} )(jQuery); 的异同

$(function () {} ); 与 ( function ($){} )(jQuery); 的异同

$(function(){...});

  的完整写法是:

$(docunemt).ready(function(){...});

  意思是在 DOM 加载完毕后执行 ready () 方法。

(function($){...})(jQuery);

 等同于下面的写法:

var fun = function(params){....};
fun(jQuery);

 是立即执行匿名函数 fun,这里参数是 jQuery。这个写法主要目的是保证 jQuery 不与其他类库或变量有冲突。

(function($){....})(jQuery);

 在定义后就立刻执行, 在执行顺序上可能要先于

$(function(){});

 其他的没啥区别 。


$(function() {....}) ,(function($){...})(jQuery)

$(function() {....}) ,(function($){...})(jQuery)

$(function() {....})

是 jQuery 中的经典用法,等同于 $(document).ready(function() {....}),即在页面加载完成后才执行某个函数,如果函数中要操作 DOM,在页面加载完成后再执行会更安全,所以在使用 jQuery 时这样的写法很常见。

 

js中使用(function()...)(jQuery)

,在这使用形参,是为了不与其他库冲突,所以实参用jQuery。

好处有
1 避免全局依赖;
2 避免第三方破坏;
3 兼容jquery操作符"$"和jquery;

 

echarts 中 formatter 的值写成 function,这个 function 可以是字符串吗?

echarts 中 formatter 的值写成 function,这个 function 可以是字符串吗?

echarts 中 formatter 的值写成 function,这个 function 可以是字符串吗?

 

// 在这里的 function 是字符串,结果显示的就是这串字符串,而没有运行该 function
formatter: "function a(params) {var tar;if (params[1].value != ''-'') {tar = params[1];}else {tar = params[0];}return tar.name + '' '' +tar.seriesName + '' : '' + tar.value;}"

我在 formatter 中写了个 function,但是是从后台传过来的,以字符串的形式,该怎样去解析这个字符串才能让他按照预期的去展示

地址:http://gallery.echartsjs.com/editor.html?c=xr1QNPUmuX&v=1

Flink UDF--Table Functions&Aggregation Functions

正文前先来一波福利推荐:

福利一:

百万年薪架构师视频,该视频可以学到很多东西,是本人花钱买的VIP课程,学习消化了一年,为了支持一下女朋友公众号也方便大家学习,共享给大家。

福利二:

毕业答辩以及工作上各种答辩,平时积累了不少精品PPT,现在共享给大家,大大小小加起来有几千套,总有适合你的一款,很多是网上是下载不到。

获取方式:

微信关注 精品3分钟 ,id为 jingpin3mins,关注后回复   百万年薪架构师 ,精品收藏PPT  获取云盘链接,谢谢大家支持!

------------------------正文开始---------------------------

1.Table Functions 表函数

   与标量函数相似之处是输入可以0,1,或者多个参数,但是不同之处可以输出任意数目的行数。返回的行也可以包含一个或者多个列。

   为了自定义表函数,需要继承TableFunction,实现一个或者多个evaluation方法。表函数的行为定义在这些evaluation方法内部,函数名为eval并且必须是public。TableFunction可以重载多个eval方法。Evaluation方法的输入参数类型,决定着表函数的输入类型。Evaluation方法也支持变参,例如:eval(String... strs)。返回表的类型取决于TableFunction的基本类型。Evaluation方法使用collect(T)发射输出rows。

   在Table API中,表函数在scala语言中使用方法如下:.join(Expression) 或者 .leftOuterJoin(Expression),在java语言中使用方法如下:.join(String) 或者.leftOuterJoin(String)。

  • Join操作算子会使用表函数(操作算子右边的表)产生的所有行进行(cross) join 外部表(操作算子左边的表)的每一行。
  • leftOuterJoin操作算子会使用表函数(操作算子右边的表)产生的所有行进行(cross) join 外部表(操作算子左边的表)的每一行,并且在表函数返回一个空表的情况下会保留所有的outer rows。

在sql语法中稍微有点区别:

  • cross join用法是LATERAL TABLE(<TableFunction>)。
  • LEFT JOIN用法是在join条件中加入ON TRUE。

下面的例子讲的是如何使用表值函数。

// The generic type "Tuple2<String, Integer>" determines the schema of the returned table as (String, Integer).

public class Split extends TableFunction<Tuple2<String, Integer>> {

  private String separator = " ";
  public Split(String separator) {
      this.separator = separator;
  }
  public void eval(String str) {
      for (String s : str.split(separator)) {
          // use collect(...) to emit a row
          collect(new Tuple2<String, Integer>(s, s.length()));
      }
  }
}
BatchTableEnvironment tableEnv = TableEnvironment.getTableEnvironment(env);
Table myTable = ...         // table schema: [a: String]
// Register the function.
tableEnv.registerFunction("split", new Split("#"));
// Use the table function in the Java Table API. "as" specifies the field names of the table.
myTable.join("split(a) as (word, length)").select("a, word, length");

myTable.leftOuterJoin("split(a) as (word, length)").select("a, word, length");

// Use the table function in SQL with LATERAL and TABLE keywords.
// CROSS JOIN a table function (equivalent to "join" in Table API).
tableEnv.sqlQuery("SELECT a, word, length FROM MyTable, LATERAL TABLE(split(a)) as T(word, length)");
// LEFT JOIN a table function (equivalent to "leftOuterJoin" in Table API).
tableEnv.sqlQuery("SELECT a, word, length FROM MyTable LEFT JOIN LATERAL TABLE(split(a)) as T(word, length) ON TRUE");

 

   需要注意的是PROJO类型不需要一个确定的字段顺序。意味着你不能使用as修改表函数返回的pojo的字段的名字。

   默认情况下TableFunction返回值类型是由flink类型抽取工具决定。对于基础类型及简单的POJOS是足够的,但是更复杂的类型,自定义类型,组合类型,会报错。这种情况下,返回值类型的TypeInformation,需要手动指定,方法是重载TableFunction#getResultType()。

下面的例子,我们通过复写TableFunction#getResultType()方法使得表返回类型是RowTypeInfo(String, Integer)

public class CustomTypeSplit extends TableFunction<Row> {
  public void eval(String str) {
      for (String s : str.split(" ")) {
          Row row = new Row(2);
          row.setField(0, s);
          row.setField(1, s.length);
          collect(row);
      }
  }
  @Override
  public TypeInformation<Row> getResultType() {
      return Types.ROW(Types.STRING(), Types.INT());
  }
}

 

2.Aggregation Functions 聚合函数

   用户自定义聚合函数聚合一张表(一行或者多行,一行有一个或者多个属性)为一个标量的值。

   聚合函数需要继承AggregateFunction。聚合函数工作方式如下:

  • 首先,需要一个accumulator,这个是保存聚合中间结果的数据结构。调用AggregateFunction函数的createAccumulator()方法来创建一个空accumulator.

  • 随后,每个输入行都会调用accumulate()方法来更新accumulator。一旦所有的行被处理了,getValue()方法就会被调用,计算和返回最终的结果。

对于每个AggregateFunction,下面三个方法都是比不可少的:

createAccumulator()

accumulate()

getValue()

 

   flink的类型抽取机制不能识别复杂的数据类型,比如,数据类型不是基础类型或者简单的pojos类型。所以,类似于ScalarFunction 和TableFunction,AggregateFunction提供了方法去指定返回结果类型的TypeInformation,用的是AggregateFunction#getResultType()。Accumulator类型用的是AggregateFunction#getAccumulatorType()。

   除了上面的方法,还有一些可选的方法。有些方法是让系统更加高效的执行查询,另外的一些在特定的场景下是必须的。

   例如,merge()方法在会话组窗口(session group window)上下文中是必须的。当一行数据是被视为跟两个会话窗口相关的时候,两个会话窗口的accumulators需要被join

AggregateFunction的下面几个方法,根据使用场景的不同需要被实现:

  • retract():在bounded OVER窗口的聚合方法中是需要实现的。
  • merge():在很多 batch 聚合和会话窗口聚合是必须的。
  • resetAccumulator(): 在大多数batch聚合是必须的。

AggregateFunction的所有方法都是需要被声明为public,而不是static。定义聚合函数需要实现org.apache.flink.table.functions.AggregateFunction同时需要实现一个或者多个accumulate方法。该方法可以被重载为不同的数据类型,并且支持变参。

   为了计算加权平均值,累加器需要存储已累积的所有数据的加权和及计数。在例子中定义一个WeightedAvgAccum类作为accumulator。尽管,retract(), merge(), 和resetAccumulator()方法在很多聚合类型是不需要的,这里也给出了例子。

 
/**
* Accumulator for WeightedAvg.
*/
public static class WeightedAvgAccum {
  public long sum = 0;
  public int count = 0;
}
/**
* Weighted Average user-defined aggregate function.
*/
public static class WeightedAvg extends AggregateFunction<Long, WeightedAvgAccum> {
  @Override
  public WeightedAvgAccum createAccumulator() {
    return new WeightedAvgAccum();
  }
  @Override
  public Long getValue(WeightedAvgAccum acc) {
      if (acc.count == 0) {
          return null;
      } else {
          return acc.sum / acc.count;
      }
  }
  public void accumulate(WeightedAvgAccum acc, long iValue, int iWeight) {
      acc.sum += iValue * iWeight;
      acc.count += iWeight;
  }

//其他方法
public void retract(WeightedAvgAccum acc, long iValue, int iWeight) { acc.sum -= iValue * iWeight; acc.count -= iWeight; } public void merge(WeightedAvgAccum acc, Iterable<WeightedAvgAccum> it) { Iterator<WeightedAvgAccum> iter = it.iterator(); while (iter.hasNext()) { WeightedAvgAccum a = iter.next(); acc.count += a.count; acc.sum += a.sum; } } public void resetAccumulator(WeightedAvgAccum acc) { acc.count = 0; acc.sum = 0L; } }

//register function StreamTableEnvironment tEnv = ... tEnv.registerFunction("wAvg", new WeightedAvg()); //use function tEnv.sqlQuery("SELECT user, wAvg(points, level) AS avgPoints FROM userScores GROUP BY user");

 

3.udf的最佳实践经验

我们今天的关于在jQuery 1.9删除.togglefunction,function之后,可以使用什么替代方法?的分享就到这里,谢谢您的阅读,如果想了解更多关于$(function () {} ); 与 ( function ($){} )(jQuery); 的异同、$(function() {....}) ,(function($){...})(jQuery)、echarts 中 formatter 的值写成 function,这个 function 可以是字符串吗?、Flink UDF--Table Functions&Aggregation Functions的相关信息,可以在本站进行搜索。

本文标签: