Apache火花文本相似度(Apache spark text similarity)
我在java中尝试以下示例
这是我的代码
public class App { public static void main(String[] args) { System.out.println("Hello World!"); System.setProperty("hadoop.home.dir", "D:\\del"); List<MyRecord> firstRow = new ArrayList<MyRecord>(); firstRow.add(new App().new MyRecord("1", "Love is blind")); List<MyRecord> secondRow = new ArrayList<MyRecord>(); secondRow.add(new App().new MyRecord("1", "Luv is blind")); SparkSession spark = SparkSession.builder().appName("LSHExample").config("spark.master", "local") .getOrCreate(); Dataset firstDataFrame = spark.createDataFrame(firstRow, MyRecord.class); Dataset secondDataFrame = spark.createDataFrame(secondRow, MyRecord.class); firstDataFrame.show(20, false); secondDataFrame.show(20, false); RegexTokenizer regexTokenizer = new RegexTokenizer().setInputCol("text").setOutputCol("words") .setPattern("\\W"); NGram ngramTransformer = new NGram().setN(3).setInputCol("words").setOutputCol("ngrams"); HashingTF hashingTF = new HashingTF().setInputCol("ngrams").setOutputCol("vectors"); MinHashLSH minHashLSH = new MinHashLSH().setInputCol("vectors").setOutputCol("lsh"); Pipeline pipeline = new Pipeline() .setStages(new PipelineStage[] { regexTokenizer, ngramTransformer, hashingTF, minHashLSH }); PipelineModel model = pipeline.fit(firstDataFrame); Dataset dataset1 = model.transform(firstDataFrame); dataset1.show(20,false); Dataset dataset2 = model.transform(secondDataFrame); dataset2 .show(20,false); Transformer[] transformers = model.stages(); MinHashLSHModel temp = (MinHashLSHModel) transformers[transformers.length - 1]; temp.approxSimilarityJoin(dataset1, dataset2, 0.01).show(20,false); } protected class MyRecord { private String id; private String text; private MyRecord(String id, String text) { this.id = id; this.text = text; } public String getId() { return id; } public String getText() { return text; } } }
在调用approxSimilarityJoin之前,两个数据集如下所示。
转换数据集A.
+---+-------------+-----------------+---------------+-----------------------+----------------+ |id |text |words |ngrams |vectors |lsh | +---+-------------+-----------------+---------------+-----------------------+----------------+ |1 |Love is blind|[love, is, blind]|[love is blind]|(262144,[243005],[1.0])|[[2.02034596E9]]| +---+-------------+-----------------+---------------+-----------------------+----------------+
转换数据集B.
+---+------------+----------------+--------------+----------------------+----------------+ |id |text |words |ngrams |vectors |lsh | +---+------------+----------------+--------------+----------------------+----------------+ |2 |Luv is blind|[luv, is, blind]|[luv is blind]|(262144,[57733],[1.0])|[[7.79808048E8]]| +---+------------+----------------+--------------+----------------------+----------------+
虽然两个文本“爱是盲目的”和“Luv是盲目的”几乎相似,但我得到以下空白输出。
+--------+--------+-------+ |datasetA|datasetB|distCol| +--------+--------+-------+ +--------+--------+-------+
请退回如果上述代码中有任何错误。
我通过为两个数据集提供相同的输入进行测试,下面是输出。 当两个数据集具有相同的文本时,distCol为零。
+--------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+-------+ |datasetA |datasetB |distCol| +--------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+-------+ |[1,Love is blind,WrappedArray(love, is, blind),WrappedArray(love is blind),(262144,[243005],[1.0]),WrappedArray([2.02034596E9])]|[2,Love is blind,WrappedArray(love, is, blind),WrappedArray(love is blind),(262144,[243005],[1.0]),WrappedArray([2.02034596E9])]|0.0 | +--------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+-------+
以下示例也使用相同的概念。
我想我错过了这个项目的一些基本方面。 请恢复。
它的工作基于user8371915给出的建议。
我删除了ngram并增加了numHashTables
MinHashLSH minHashLSH = new MinHashLSH().setInputCol("features").setOutputCol("hashValues").setNumHashTables(20);
现在,我能够了解这种匹配的工作原理
以下是我的两个数据集
数据集A.
+---+-------------+ |id |text | +---+-------------+ |1 |Love is blind| +---+-------------+
数据集B.
+---+-------------------------+ |id |text | +---+-------------------------+ |1 |Love is blind | |2 |Luv is blind | |3 |Lov is blind | |4 |This is totally different| |5 |God is love | |6 |blind love is divine | +---+-------------------------+
最后的输出如下
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------+ |datasetA |datasetB |distCol| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------+ |[1,Love is blind,WrappedArray(love, is, blind),(262144,[15889,48831,186480],[1.0,1.0,1.0]),WrappedArray([-1.06555007E9], [-1.557513224E9], [-1.590526534E9], [-2.83593282E8], [-1.815588486E9], [-1.411500923E9], [-6.93210471E8], [-8.0411681E7], [-1.713286948E9], [-1.698342316E9], [-9.33829921E8], [-1.240833109E9], [-1.48476096E8], [-1.882820721E9], [-7.50906814E8], [1.99715481E8], [-1.997519365E9], [-1.380314819E9], [-5.92484283E8], [-1.869738298E9])]|[1,Love is blind,WrappedArray(love, is, blind),(262144,[15889,48831,186480],[1.0,1.0,1.0]),WrappedArray([-1.06555007E9], [-1.557513224E9], [-1.590526534E9], [-2.83593282E8], [-1.815588486E9], [-1.411500923E9], [-6.93210471E8], [-8.0411681E7], [-1.713286948E9], [-1.698342316E9], [-9.33829921E8], [-1.240833109E9], [-1.48476096E8], [-1.882820721E9], [-7.50906814E8], [1.99715481E8], [-1.997519365E9], [-1.380314819E9], [-5.92484283E8], [-1.869738298E9])] |0.0 | |[1,Love is blind,WrappedArray(love, is, blind),(262144,[15889,48831,186480],[1.0,1.0,1.0]),WrappedArray([-1.06555007E9], [-1.557513224E9], [-1.590526534E9], [-2.83593282E8], [-1.815588486E9], [-1.411500923E9], [-6.93210471E8], [-8.0411681E7], [-1.713286948E9], [-1.698342316E9], [-9.33829921E8], [-1.240833109E9], [-1.48476096E8], [-1.882820721E9], [-7.50906814E8], [1.99715481E8], [-1.997519365E9], [-1.380314819E9], [-5.92484283E8], [-1.869738298E9])]|[2,Luv is blind,WrappedArray(luv, is, blind),(262144,[15889,48831,84987],[1.0,1.0,1.0]),WrappedArray([-2.021501434E9], [-1.557513224E9], [-1.590526534E9], [-2.83593282E8], [-1.815588486E9], [-6.70773282E8], [-6.93210471E8], [-1.205754635E9], [-1.713286948E9], [-1.698342316E9], [-9.33829921E8], [-1.240833109E9], [4.46435174E8], [-1.882820721E9], [-7.50906814E8], [1.99715481E8], [-1.036250081E9], [-1.380314819E9], [-5.92484283E8], [-1.869738298E9])] |0.5 | |[1,Love is blind,WrappedArray(love, is, blind),(262144,[15889,48831,186480],[1.0,1.0,1.0]),WrappedArray([-1.06555007E9], [-1.557513224E9], [-1.590526534E9], [-2.83593282E8], [-1.815588486E9], [-1.411500923E9], [-6.93210471E8], [-8.0411681E7], [-1.713286948E9], [-1.698342316E9], [-9.33829921E8], [-1.240833109E9], [-1.48476096E8], [-1.882820721E9], [-7.50906814E8], [1.99715481E8], [-1.997519365E9], [-1.380314819E9], [-5.92484283E8], [-1.869738298E9])]|[5,God is love,WrappedArray(god, is, love),(262144,[15889,57304,186480],[1.0,1.0,1.0]),WrappedArray([-7.6253133E7], [-2.6669178E7], [-1.590526534E9], [-2.83593282E8], [-1.060055906E9], [-1.411500923E9], [-9.83191394E8], [-8.0411681E7], [-1.04032919E9], [-1.373403353E9], [-5.63413619E8], [-1.240833109E9], [-1.48476096E8], [-1.7390215E9], [-1.745820849E9], [8.1559665E7], [-1.997519365E9], [-1.635066748E9], [6.38995945E8], [-1.59718287E9])] |0.5 | |[1,Love is blind,WrappedArray(love, is, blind),(262144,[15889,48831,186480],[1.0,1.0,1.0]),WrappedArray([-1.06555007E9], [-1.557513224E9], [-1.590526534E9], [-2.83593282E8], [-1.815588486E9], [-1.411500923E9], [-6.93210471E8], [-8.0411681E7], [-1.713286948E9], [-1.698342316E9], [-9.33829921E8], [-1.240833109E9], [-1.48476096E8], [-1.882820721E9], [-7.50906814E8], [1.99715481E8], [-1.997519365E9], [-1.380314819E9], [-5.92484283E8], [-1.869738298E9])]|[6,blind love is divine,WrappedArray(blind, love, is, divine),(262144,[15889,25596,48831,186480],[1.0,1.0,1.0,1.0]),WrappedArray([-1.06555007E9], [-1.557513224E9], [-1.590526534E9], [-1.627956291E9], [-1.815588486E9], [-1.411500923E9], [-6.93210471E8], [-8.0411681E7], [-1.713286948E9], [-1.698342316E9], [-9.33829921E8], [-1.240833109E9], [-1.93451596E9], [-1.882820721E9], [-7.50906814E8], [-1.152091375E9], [-1.997519365E9], [-1.380314819E9], [-8.50494401E8], [-1.869738298E9])]|0.25 | |[1,Love is blind,WrappedArray(love, is, blind),(262144,[15889,48831,186480],[1.0,1.0,1.0]),WrappedArray([-1.06555007E9], [-1.557513224E9], [-1.590526534E9], [-2.83593282E8], [-1.815588486E9], [-1.411500923E9], [-6.93210471E8], [-8.0411681E7], [-1.713286948E9], [-1.698342316E9], [-9.33829921E8], [-1.240833109E9], [-1.48476096E8], [-1.882820721E9], [-7.50906814E8], [1.99715481E8], [-1.997519365E9], [-1.380314819E9], [-5.92484283E8], [-1.869738298E9])]|[3,Lov is blind,WrappedArray(lov, is, blind),(262144,[15889,48831,81946],[1.0,1.0,1.0]),WrappedArray([-1.06555007E9], [-1.557513224E9], [-1.590526534E9], [-2.83593282E8], [-1.88316392E9], [-1.776275893E9], [-6.93210471E8], [-1.39927757E8], [-1.713286948E9], [-1.698342316E9], [-1.164990332E9], [-1.240833109E9], [-1.519529732E9], [-1.882820721E9], [-7.50906814E8], [1.99715481E8], [-1.036250081E9], [-1.380314819E9], [-1.808919173E9], [-1.869738298E9])] |0.5 | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------+
I am trying the below example in java
Efficient string matching in Apache Spark
This is my code
public class App { public static void main(String[] args) { System.out.println("Hello World!"); System.setProperty("hadoop.home.dir", "D:\\del"); List<MyRecord> firstRow = new ArrayList<MyRecord>(); firstRow.add(new App().new MyRecord("1", "Love is blind")); List<MyRecord> secondRow = new ArrayList<MyRecord>(); secondRow.add(new App().new MyRecord("1", "Luv is blind")); SparkSession spark = SparkSession.builder().appName("LSHExample").config("spark.master", "local") .getOrCreate(); Dataset firstDataFrame = spark.createDataFrame(firstRow, MyRecord.class); Dataset secondDataFrame = spark.createDataFrame(secondRow, MyRecord.class); firstDataFrame.show(20, false); secondDataFrame.show(20, false); RegexTokenizer regexTokenizer = new RegexTokenizer().setInputCol("text").setOutputCol("words") .setPattern("\\W"); NGram ngramTransformer = new NGram().setN(3).setInputCol("words").setOutputCol("ngrams"); HashingTF hashingTF = new HashingTF().setInputCol("ngrams").setOutputCol("vectors"); MinHashLSH minHashLSH = new MinHashLSH().setInputCol("vectors").setOutputCol("lsh"); Pipeline pipeline = new Pipeline() .setStages(new PipelineStage[] { regexTokenizer, ngramTransformer, hashingTF, minHashLSH }); PipelineModel model = pipeline.fit(firstDataFrame); Dataset dataset1 = model.transform(firstDataFrame); dataset1.show(20,false); Dataset dataset2 = model.transform(secondDataFrame); dataset2 .show(20,false); Transformer[] transformers = model.stages(); MinHashLSHModel temp = (MinHashLSHModel) transformers[transformers.length - 1]; temp.approxSimilarityJoin(dataset1, dataset2, 0.01).show(20,false); } protected class MyRecord { private String id; private String text; private MyRecord(String id, String text) { this.id = id; this.text = text; } public String getId() { return id; } public String getText() { return text; } } }
Before invoking the approxSimilarityJoin the two datasets look like below.
Transformed Dataset A
+---+-------------+-----------------+---------------+-----------------------+----------------+ |id |text |words |ngrams |vectors |lsh | +---+-------------+-----------------+---------------+-----------------------+----------------+ |1 |Love is blind|[love, is, blind]|[love is blind]|(262144,[243005],[1.0])|[[2.02034596E9]]| +---+-------------+-----------------+---------------+-----------------------+----------------+
Transformed Dataset B
+---+------------+----------------+--------------+----------------------+----------------+ |id |text |words |ngrams |vectors |lsh | +---+------------+----------------+--------------+----------------------+----------------+ |2 |Luv is blind|[luv, is, blind]|[luv is blind]|(262144,[57733],[1.0])|[[7.79808048E8]]| +---+------------+----------------+--------------+----------------------+----------------+
Though the two texts "Love is blind" and "Luv is blind" are almost similar , I get the below blank output.
+--------+--------+-------+ |datasetA|datasetB|distCol| +--------+--------+-------+ +--------+--------+-------+
Kindly revert If there is any mistake in the above code .
I tested by giving the same input for both data sets and below is the output. The distCol is zero when both the datasets have same text.
+--------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+-------+ |datasetA |datasetB |distCol| +--------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+-------+ |[1,Love is blind,WrappedArray(love, is, blind),WrappedArray(love is blind),(262144,[243005],[1.0]),WrappedArray([2.02034596E9])]|[2,Love is blind,WrappedArray(love, is, blind),WrappedArray(love is blind),(262144,[243005],[1.0]),WrappedArray([2.02034596E9])]|0.0 | +--------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+-------+
The below example also uses the same concept.
I think I am missing some fundamental aspect in this program. Kindly revert.
It worked based upon the suggestions given by user8371915 .
I removed the ngram and increased the numHashTables
MinHashLSH minHashLSH = new MinHashLSH().setInputCol("features").setOutputCol("hashValues").setNumHashTables(20);
Now I am able to relate how this matching works
Below are my two dataset
Dataset A
+---+-------------+ |id |text | +---+-------------+ |1 |Love is blind| +---+-------------+
Dataset B
+---+-------------------------+ |id |text | +---+-------------------------+ |1 |Love is blind | |2 |Luv is blind | |3 |Lov is blind | |4 |This is totally different| |5 |God is love | |6 |blind love is divine | +---+-------------------------+
and the final output is below
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------+ |datasetA |datasetB |distCol| +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------+ |[1,Love is blind,WrappedArray(love, is, blind),(262144,[15889,48831,186480],[1.0,1.0,1.0]),WrappedArray([-1.06555007E9], [-1.557513224E9], [-1.590526534E9], [-2.83593282E8], [-1.815588486E9], [-1.411500923E9], [-6.93210471E8], [-8.0411681E7], [-1.713286948E9], [-1.698342316E9], [-9.33829921E8], [-1.240833109E9], [-1.48476096E8], [-1.882820721E9], [-7.50906814E8], [1.99715481E8], [-1.997519365E9], [-1.380314819E9], [-5.92484283E8], [-1.869738298E9])]|[1,Love is blind,WrappedArray(love, is, blind),(262144,[15889,48831,186480],[1.0,1.0,1.0]),WrappedArray([-1.06555007E9], [-1.557513224E9], [-1.590526534E9], [-2.83593282E8], [-1.815588486E9], [-1.411500923E9], [-6.93210471E8], [-8.0411681E7], [-1.713286948E9], [-1.698342316E9], [-9.33829921E8], [-1.240833109E9], [-1.48476096E8], [-1.882820721E9], [-7.50906814E8], [1.99715481E8], [-1.997519365E9], [-1.380314819E9], [-5.92484283E8], [-1.869738298E9])] |0.0 | |[1,Love is blind,WrappedArray(love, is, blind),(262144,[15889,48831,186480],[1.0,1.0,1.0]),WrappedArray([-1.06555007E9], [-1.557513224E9], [-1.590526534E9], [-2.83593282E8], [-1.815588486E9], [-1.411500923E9], [-6.93210471E8], [-8.0411681E7], [-1.713286948E9], [-1.698342316E9], [-9.33829921E8], [-1.240833109E9], [-1.48476096E8], [-1.882820721E9], [-7.50906814E8], [1.99715481E8], [-1.997519365E9], [-1.380314819E9], [-5.92484283E8], [-1.869738298E9])]|[2,Luv is blind,WrappedArray(luv, is, blind),(262144,[15889,48831,84987],[1.0,1.0,1.0]),WrappedArray([-2.021501434E9], [-1.557513224E9], [-1.590526534E9], [-2.83593282E8], [-1.815588486E9], [-6.70773282E8], [-6.93210471E8], [-1.205754635E9], [-1.713286948E9], [-1.698342316E9], [-9.33829921E8], [-1.240833109E9], [4.46435174E8], [-1.882820721E9], [-7.50906814E8], [1.99715481E8], [-1.036250081E9], [-1.380314819E9], [-5.92484283E8], [-1.869738298E9])] |0.5 | |[1,Love is blind,WrappedArray(love, is, blind),(262144,[15889,48831,186480],[1.0,1.0,1.0]),WrappedArray([-1.06555007E9], [-1.557513224E9], [-1.590526534E9], [-2.83593282E8], [-1.815588486E9], [-1.411500923E9], [-6.93210471E8], [-8.0411681E7], [-1.713286948E9], [-1.698342316E9], [-9.33829921E8], [-1.240833109E9], [-1.48476096E8], [-1.882820721E9], [-7.50906814E8], [1.99715481E8], [-1.997519365E9], [-1.380314819E9], [-5.92484283E8], [-1.869738298E9])]|[5,God is love,WrappedArray(god, is, love),(262144,[15889,57304,186480],[1.0,1.0,1.0]),WrappedArray([-7.6253133E7], [-2.6669178E7], [-1.590526534E9], [-2.83593282E8], [-1.060055906E9], [-1.411500923E9], [-9.83191394E8], [-8.0411681E7], [-1.04032919E9], [-1.373403353E9], [-5.63413619E8], [-1.240833109E9], [-1.48476096E8], [-1.7390215E9], [-1.745820849E9], [8.1559665E7], [-1.997519365E9], [-1.635066748E9], [6.38995945E8], [-1.59718287E9])] |0.5 | |[1,Love is blind,WrappedArray(love, is, blind),(262144,[15889,48831,186480],[1.0,1.0,1.0]),WrappedArray([-1.06555007E9], [-1.557513224E9], [-1.590526534E9], [-2.83593282E8], [-1.815588486E9], [-1.411500923E9], [-6.93210471E8], [-8.0411681E7], [-1.713286948E9], [-1.698342316E9], [-9.33829921E8], [-1.240833109E9], [-1.48476096E8], [-1.882820721E9], [-7.50906814E8], [1.99715481E8], [-1.997519365E9], [-1.380314819E9], [-5.92484283E8], [-1.869738298E9])]|[6,blind love is divine,WrappedArray(blind, love, is, divine),(262144,[15889,25596,48831,186480],[1.0,1.0,1.0,1.0]),WrappedArray([-1.06555007E9], [-1.557513224E9], [-1.590526534E9], [-1.627956291E9], [-1.815588486E9], [-1.411500923E9], [-6.93210471E8], [-8.0411681E7], [-1.713286948E9], [-1.698342316E9], [-9.33829921E8], [-1.240833109E9], [-1.93451596E9], [-1.882820721E9], [-7.50906814E8], [-1.152091375E9], [-1.997519365E9], [-1.380314819E9], [-8.50494401E8], [-1.869738298E9])]|0.25 | |[1,Love is blind,WrappedArray(love, is, blind),(262144,[15889,48831,186480],[1.0,1.0,1.0]),WrappedArray([-1.06555007E9], [-1.557513224E9], [-1.590526534E9], [-2.83593282E8], [-1.815588486E9], [-1.411500923E9], [-6.93210471E8], [-8.0411681E7], [-1.713286948E9], [-1.698342316E9], [-9.33829921E8], [-1.240833109E9], [-1.48476096E8], [-1.882820721E9], [-7.50906814E8], [1.99715481E8], [-1.997519365E9], [-1.380314819E9], [-5.92484283E8], [-1.869738298E9])]|[3,Lov is blind,WrappedArray(lov, is, blind),(262144,[15889,48831,81946],[1.0,1.0,1.0]),WrappedArray([-1.06555007E9], [-1.557513224E9], [-1.590526534E9], [-2.83593282E8], [-1.88316392E9], [-1.776275893E9], [-6.93210471E8], [-1.39927757E8], [-1.713286948E9], [-1.698342316E9], [-1.164990332E9], [-1.240833109E9], [-1.519529732E9], [-1.882820721E9], [-7.50906814E8], [1.99715481E8], [-1.036250081E9], [-1.380314819E9], [-1.808919173E9], [-1.869738298E9])] |0.5 | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------+
原文:https://stackoverflow.com/questions/47618661
最满意答案
检查之前输入的
index
,如果它少于触发before函数,否则触发after。 然后将当前索引重置为now索引。var currentIndex = $("input[name='radio']:checked").index('input'); $("input[name='radio']").change(function() { var index = $(this).index('input'); if (index < currentIndex) { console.log('before'); } else { console.log('after'); } currentIndex = index; });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="radio" id="a" name="radio"> <label for="a">A</label> <input type="radio" id="b" name="radio" checked> <label for="b">B</label> <input type="radio" id="c" name="radio"> <label for="c">C</label> <input type="radio" id="d" name="radio"> <label for="d">D</label>
Check the
index
of the input before, if its less then fire the before function, else fire the after. then reset the current index to the now index.var currentIndex = $("input[name='radio']:checked").index('input'); $("input[name='radio']").change(function() { var index = $(this).index('input'); if (index < currentIndex) { console.log('before'); } else { console.log('after'); } currentIndex = index; });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="radio" id="a" name="radio"> <label for="a">A</label> <input type="radio" id="b" name="radio" checked> <label for="b">B</label> <input type="radio" id="c" name="radio"> <label for="c">C</label> <input type="radio" id="d" name="radio"> <label for="d">D</label>
相关问答
更多-
由于已在其上设置了属性position ,因此您的元素未显示。 要使其工作,请在img标记周围添加table元素,并在它们上设置margin: auto属性。 #block1 { width: 100%; height: auto; background-color: blue; } #img1 { width: 100px; height: 100px; left: 50%; transform: translate(-50%); -webkit-tra ...
-
使用相对于彼此的旋转点的Intead,可能围绕太阳旋转所有行星。 每个行星都有自己的太阳半径,所以你的数学减少到这个(圆形轨道): var neptune.x=sun.x+neptune.radius*Math.cos(radianAngle); var neptune.y=sun.y+neptune.radius*Math.sin(radianAngle); 当然,行星轨道实际上是椭圆形而不是圆形。 您可以像这样计算椭圆上的点: // Calc points on Ellipse function ge ...
-
这个系统的名称是什么? 您正在考虑的系统是极坐标 。 这些用半径r和角度θ表示位置。 您可以按如下方式从直角坐标转换为极坐标: r = sqrt(x^2 + y^2) theta = atan2(y, x) 例如,我需要一个算法来看o1的距离o1的程度和距离 极坐标对此不太好。 你只需要简单的三角函数。 What is the name of this system? The system you're thinking of is polar coordinates. These express a p ...
-
var $window = $(window); 该行正在缓存该窗口实例。 每次调用此代码以获取更新的宽度和高度值时,都需要重新评估$(window) 更新了以下代码 function checkWidth() { var $window = $(window); var windowsize = $window.width(); document.write(windowsize); if (windowsize < 1200) { document.ge ...
-
div的相对定位(relative positioning of div)[2023-03-31]
如何从实际页面的角点而不是窗口中获取定位? 您需要添加position: relative对于您希望偏移top和left值的元素。 这可能是你的form ,或者它可能是你的#container / #wrapper元素。 请参阅此处了解详细信息和视觉效果: http : //css-tricks.com/absolute-positioning-inside-relative-positioning/ How can I get the positioning to be specified from th ... -
首先尝试对行进行分组:
然后迭代组:检查之前输入的index ,如果它少于触发before函数,否则触发after。 然后将当前索引重置为now索引。 var currentIndex = $("input[name='radio']:checked").index('input'); $("input[name='radio']").change(function() { var index = $(this).index('input'); if (index < currentIndex) { console.l ...通常,根据我的经验(厘米级),旋转和位置跟踪都是非常高的质量。 然而,有一个恼人的错误(显然不是由Tango引起的,而是由Android 4.4的传感器驱动程序引起的) 偶尔会导致快速漂移。 很烦人。 以下是问题的解读: https : //plus.google.com/+ChuckKnowledge/posts/dVk4ZgVikgT 我希望这会在消费级设备中自行消失(显然会使用更高版本的Android),但即使是现在也需要考虑。 最重要的是,当我向其他人演示Tango时,它可能会发生,而且它显然会破坏 ...这在此定义: http : //www.w3.org/TR/css3-positioning/#def-cb 该参考文献的相关简介: 对于fixed,absolute,center和page,它定义如下: 如果元素具有'position:absolute',则包含块由最近的祖先以非静态位置建立,其方式如下:1。如果祖先是块级,则包含块由祖先的填充边缘。 2.在祖先是内联级别的情况下,包含块取决于祖先的方向属性... 和 如果没有这样的祖先,则包含块是初始包含块 更多细节: http : //www.w3.o ...相对定位下拉菜单(Relatively Positioning drop down menu)[2023-07-17]
你的容器是960px 。 下拉菜单有一个auto宽度,因此您需要估算每个菜单的宽度(比方说200px )。 现在,您可以使用document.body.offsetWidth来确定浏览器窗口的宽度。 这就是我的建议: function on_hover() { ... dropdown_width = 200; container_width = 960; if (document.body.offsetWidth < container_width + dropdown_w ...相关文章
更多- 荐 Lucene打分规则与Similarity模块详解
- SVG文本text
- Solr官方文档系列——Text Analysis
- Django and full-text search
- 网络挖掘技术——text mining
- 初步了解Spark生态系统及Spark Streaming
- Apache Spark源码走读之8 -- Spark on Yarn
- Apache Spark源码走读之8 -- Spark on Yarn
- Full-Text Search in ASP.NET using Lucene.NET
- Spark,一种快速数据分析替代方案
最新问答
更多- 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
- 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
- OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
- 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
- codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
- 在计算机拍照在哪里进入
- 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
- No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
- 单页应用程序:页面重新加载(Single Page Application: page reload)
- 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
- System.StackOverflow错误(System.StackOverflow error)
- KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
- 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
- android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
- TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
- 企业安全培训的各项内容
- 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
- C#类名中允许哪些字符?(What characters are allowed in C# class name?)
- NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
- 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
- 将多个行和可变行移动到列(moving multiple and variable rows to columns)
- 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
- 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
- Angular $资源不会改变方法(Angular $resource doesn't change method)
- 在Angular 5中不是一个函数(is not a function in Angular 5)
- 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
- 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
- 常见的python rpc和cli接口(Common python rpc and cli interface)
- Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
- 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)