Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.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
Javascript 为什么在jquery中两次单击事件调用_Javascript_Jquery_Jquery Plugins - Fatal编程技术网

Javascript 为什么在jquery中两次单击事件调用

Javascript 为什么在jquery中两次单击事件调用,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我做了一个小插件来练习。但单击第一个跨距,它会在控制台中打印两次 $.fn.sample=函数(选项){ var设置=$.extend({ d:错 },选项) $(this.append($('').attr({id:'jitender'}).text('hi click me')) $('span')。单击(函数(){ 如果(设置d) 控制台日志(1) 其他的 控制台日志(2) }) 还这个 } $(函数(){ $('div.one')。示例({ d:是的 }) $('div.two')。示例

我做了一个小插件来练习。但单击第一个跨距,它会在控制台中打印两次

$.fn.sample=函数(选项){
var设置=$.extend({
d:错
},选项)
$(this.append($('').attr({id:'jitender'}).text('hi click me'))
$('span')。单击(函数(){
如果(设置d)
控制台日志(1)
其他的
控制台日志(2)
})
还这个
}
$(函数(){
$('div.one')。示例({
d:是的
})
$('div.two')。示例({
d:错
})
})
$('span')。单击将自身附加到所有span标记

更改:

$('span').click(function()
致:

$('span')。单击将自身附加到所有span标记

更改:

$('span').click(function()
致:


每次调用sample时,您都会将click事件添加到所有span标记中。我想你真的想要这样的东西:

var clickSpan = $('<span/>').attr({id:'jitender'}).text('hi click me');
$(this).append(clickSpan);
clickSpan.click(function(){
    if(setting.d)
      console.log(1);
    else
      console.log(2);
});
var clickSpan=$('').attr({id:'jitender'}).text('hi click me');
$(此).append(单击span);
单击span。单击(函数(){
如果(设置d)
控制台日志(1);
其他的
控制台日志(2);
});

每次调用sample时,您都会将click事件添加到所有span标记中。我想你真的想要这样的东西:

var clickSpan = $('<span/>').attr({id:'jitender'}).text('hi click me');
$(this).append(clickSpan);
clickSpan.click(function(){
    if(setting.d)
      console.log(1);
    else
      console.log(2);
});
var clickSpan=$('').attr({id:'jitender'}).text('hi click me');
$(此).append(单击span);
单击span。单击(函数(){
如果(设置d)
控制台日志(1);
其他的
控制台日志(2);
});

每次调用插件时,您都在所有
上设置一个事件处理程序。您可以通过更具体地使用插件中的处理程序来解决此问题,更改:

  $('span').click(function(){
    if(setting.d)
      console.log(1)
    else
      console.log(2)
  })
当在
上单击
执行此操作时,您已经设置了两个处理程序,每个处理程序都会被调用

将上述内容更改为以下内容(这将“偶数单击”限制为在调用插件的元素中跨越):


请参见此

每次调用插件时,您都在所有
上设置事件处理程序。您可以通过更具体地使用插件中的处理程序来解决此问题,更改:

  $('span').click(function(){
    if(setting.d)
      console.log(1)
    else
      console.log(2)
  })
当在
上单击
执行此操作时,您已经设置了两个处理程序,每个处理程序都会被调用

将上述内容更改为以下内容(这将“偶数单击”限制为在调用插件的元素中跨越):


请参见此

,因为您已将两个事件处理程序附加到该范围

这是因为当您调用
$('span')。单击(…)
-您正在将通风处理程序附加到文档中的所有跨度


如果只想将其附加到正在应用示例插件的div中的span,请编写:
$('span',this)。单击(…)

,因为您已将两个事件处理程序附加到该span

这是因为当您调用
$('span')。单击(…)
-您正在将通风处理程序附加到文档中的所有跨度

如果只想将其附加到正在应用示例插件的div中的span,请编写:
$('span',this)。单击(…)