鼠标中的功能不改变Attr

时间:2014-03-14 19:34:24

标签: javascript jquery function

我正在尝试在mouseenter函数中运行attr更改。我需要在mouseenter函数中创建一个新函数,因为我最终需要它来回调。我从一开始就开始,现在它不能在最基本的水平上运作。

在下面的示例中,您将看到我首先遍历所有图像。然后我拿出图像文件名并更改后缀(据我所知,这对我来说并不重要,我只是把它包括在内,所以我在这里做了我所做的一切以防万一)。然后我运行一个'mouseenter'函数,它将触发image元素。它将图像的新“src”记录到控制台,然后应该更改src。它成功记录了src,但没有成功触发attr函数。

我还记录了$(this).attr('src')以确保它正确识别图像并且也可以正常工作。所以它知道当前的$(this).attr('src')并识别new_img_src变量但是不会触发该函数。为什么会这样?

就像我说的那样,我最终想要做一个回调函数,这就是为什么这样格式化的原因。一旦我设置了所有代码,我将从img_loop()中调用img_loop(),因此我需要img_loop()函数,而不是在mouseenter中使用$(this).attr()函数。 / p>

感谢您的帮助!

$('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();
    });

});

1 个答案:

答案 0 :(得分:0)

可能更容易不为每个元素分配.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);
});

您不必继续重置此侦听器,只需将其附加到正文中即可。输入每个img后,它将传播到正文。然后,您可以动态地将img添加到页面,而不必担心添加或删除侦听器。