Mouseenter内部函数不改变属性
Function Inside Mouseenter Not Changing Attr
我试图在mouseenter函数内运行attr更改。我需要在mouseenter函数中创建一个新函数,因为我最终需要它回调。我从头开始,但它现在还没有在最基本的层面上运行。
在下面的示例中,您将看到我首先遍历所有图像。然后,我取图像文件名并更改后缀(据我所知,这对这并不重要,我只是包括它,所以我在这里做的一切只是以防万一)。然后我运行一个'mouseenter'函数,它将在图像元素上触发。它将映像的新'src'记录到控制台,然后应该更改src。它成功地记录了src,但没有成功地触发attr函数。
我还记录了$(this).attr('src'),以确保它正确识别图像,并且也能正常工作。因此,它知道当前的$(this).attr('src'),并识别new_img_src变量,但不触发函数。为什么会这样?
就像我说的,我最终想做一个回调函数,这就是为什么这个格式是这样的。一旦我设置了所有的代码,我将从img_loop()中调用img_loop(),所以我需要img_loop()函数在那里,而不是在mouseenter中使用$(this).attr()函数。
谢谢你的帮助!
$('img').each(function(){
var img_src = $(this).attr('src');
var url_prefix = img_src.substr(0, img_src.indexOf('-1.jpg'));
var new_img_src = url_prefix + '-3.jpg';
$(this).mouseenter(function(){
function img_loop(){
console.log(new_img_src);
$(this).attr('src',new_img_src);
}
img_loop();
});
});
也许不给每个元素分配一个.mouseenter()
更容易,但使用委托与jquery .on()
$('body').on('mouseenter','img',function(){
var me = $(this),
src = me.attr('src');
//User your stuff to prep src string
src = src.substr(0, src.indexOf('-1.jpg'));
src = src+ '-3.jpg';
me.attr('src',src);
});
您不必一直重置这个侦听器,只需将其附加到body。当每个img
进入后,它将传播到体内。然后,您可以动态地将img
添加到页面中,而不必担心添加或删除侦听器。
相关文章:
- 可以't改变'name'元素的属性
- 输入字段值属性不会改变,除非type=“”;隐藏”;
- 切换一个Div与按钮改变左边距属性
- Pop Window的属性在Javascript中没有改变
- 为什么可以't改变图像's src属性
- 你能用Javascript改变一个表的背景属性吗
- 改变“;选择“;下拉列表的属性无法正常工作
- 当根作用域属性改变时刷新指令
- Angularjs指令:如何在属性改变后更新模板中的ng-class
- 当视图模型属性改变复选框值时被通知
- 平滑地动画属性改变到3000个拉斐尔对象一次
- jQuery使用数据属性改变值
- 属性改变不工作在IE11
- 如何将属性改变的事件附加到聚合物的dom-bind上
- EaselJS:在属性改变时更新形状颜色
- 在角模型属性改变时改变输入类
- Chrome: className属性改变不与GWT一起工作
- 当data-*属性改变时,如何更新元素
- 是否有一种方法来拦截/监控Javascript中的CSS属性改变使用香草Javascript
- 只有当某个属性改变时才订阅可观察对象