Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.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.live(';单击';)未按预期工作_Javascript_Jquery - Fatal编程技术网

Javascript jQuery.live(';单击';)未按预期工作

Javascript jQuery.live(';单击';)未按预期工作,javascript,jquery,Javascript,Jquery,我正在尝试设置下面的徽标important.png,因此当您单击此项时,它将忽略带有.editable的侦听器的父元素,并仅使用我分配给它的侦听器。下面的代码在Chrome中非常有效,但在IE8中却不行。它在IE 8中不起作用,我需要它。如果不使用onClick(),我不确定在IE 8中设置它的最佳方法。如果我能用JS中的监听器来设置它会容易得多 自由通信:选择PPO //切换表单状态 jQuery('#formStatus').change(函数(){ get('/products/aja

我正在尝试设置下面的
徽标important.png
,因此当您单击此项时,它将忽略带有
.editable
的侦听器的父元素,并仅使用我分配给它的侦听器。下面的代码在Chrome中非常有效,但在IE8中却不行。它在IE 8中不起作用,我需要它。如果不使用onClick(),我不确定在IE 8中设置它的最佳方法。如果我能用JS中的监听器来设置它会容易得多


自由通信:选择PPO
//切换表单状态
jQuery('#formStatus').change(函数(){
get('/products/ajax_updateStatus/'+Page.formId++'/'+jQuery(this.val()++'/',{},函数(){
通知(“检查”,“状态已更新”);
});
});
jQuery('.editable').live('click',函数(){
var urlpages=(document.location+'').split('/');
jQuery.fancybox({
'href':urlpices[0]+'/'+urlpices[1]+'/'+urlpices[2]+'/'+urlpices[3]+'/update_form_field/'+jQuery(this.attr('data-fieldId'),
“title”:jQuery(this.attr('data-fieldName'),
“自动标注”:false,
“边距”:0,
“填充”:15,
“宽度”:“768”,
“滚动”:“自动”,
“height”:jQuery(window).height()-100,
“onComplete”:函数(){
jQuery(“fancybox标题”).css({
'顶部':'-10px',
“底部”:“自动”
});
}
});
});
jQuery('img[src=/img/embody-important.png]').live('click',函数(e){
e、 停止传播();
如果(确认('您确定要将此字段还原为其原始内容吗?')){
var locSplit=(document.location+'').split('/'),
id=jQuery(jQuery(e.currentTarget).parent()).attr('id'),
fieldId=jQuery(this).closest('td').attr('data-fieldId');
jQuery.get('/customs/revertField/'+locSplit[locSplit.length-1]+'/'+fieldId,函数(r){
jQuery('#'+id).html(r.fieldValue);
}“json”);
}
});

一些浏览器会将
src
属性扩展到实际用于请求图像的URL

使用应修复以下问题:

img[src$=/img/emblem-important.png]

在使用“.live()”处理事件时,对事件调用“stopPropagation()”没有多大意义。在调用处理程序时,事件已经传播到body标记

不必这样做,只需检查事件目标并在适当时忽略它:

if ($(event.target).is('img[src=/img/emblem-important.png]'))
  return; // or whatever
“活动”机制通过在
元素上使用框架提供的事件处理程序来工作。当该处理程序获取事件时,它会查看已注册处理程序选择器的清单,并在目标匹配时应用其中的每一个选择器


编辑-您也可以改为尝试“event.stopImmediatePropagation()”。再次编辑否:-)但是返回的
false
显然被记录为工作。

不会
返回false
很好地完成这个技巧吗

参见Jquery文档:

要在使用.live()绑定一次后停止执行其他处理程序,请执行以下操作:, 处理程序必须返回false。调用.stopPropagation()将不会 做到这一点


当您可以只做
id=this.parentNode.id
时,为什么要做
id=jQuery(jQuery(e.currentTarget).parent()).attr('id')
?一些问题可以通过使用.delegate()而不是.live()来解决。根据事件传播到的位置,您通常可以在委托处理程序上成功停止传播,而不必返回false;“stopPropagation()”会有任何有用的效果吗?(检查了jQuery源代码,但快速浏览“live()”代码后我不清楚。)@Pointy:不会的。相反,他应该使用
返回false如警告中所述:
.stopPropagation()
将在通过
.live()
绑定的处理程序之间工作。。。没关系,我想我错了…显然我错了,我非常非常困惑…哦,等等,我明白问题是什么了。包括
e.stopPropagation()
似乎确实有不同。好的-我不太清楚“.live()”代码是否引起了注意,但我想是的。我不知道这是否取决于处理程序的添加顺序;它从目标调用“.closest()”以查找要调用的处理程序,但是。。。。好吧,这让人困惑。这让人困惑,尤其是因为文件中包含了另一个答案中提到的警告。所以我想我的意思是我只是不知道!;)