2013-02-04 69 views
0

我正在尝试自定义一个插件以适应我的需要。我试图做的是,当我点击图像集合中的图像时,我得到了图像的src,并用该图像恢复插件。我遇到的问题是当我得到图像的源代码时,它给了我[对象对象]而不是实际的源代码。我使用$(this).attr(“src”)来获取图像源。attr显示对象对象的值

所以基本上我的代码那种看起来是这样的:

<div id="images"> 
     <img src="image1"/> 
     <img src="image2"/> 
     <img src="image3"/> 
     <img src="image4"/> 
    </div> 

$(document).ready(function(){ 
    $("#images img").on("click", function(){ 
    var img_src=$(this).attr("src"); 
    $("#id").plugin({ 
     image:img_src 
    }); 
}); 
}); 

编辑:我更新了我的代码,以便更清楚我问。

更新:实际上,即使我从中删除所有其他js,代码也不起作用。但它在jsfiddle中工作

更新2:所以我在寻找一个解决方案,并且似乎我所使用的插件以某种方式覆盖了attr函数。有没有办法阻止它这样做?或者,也许创建一个不受插件影响的jQuery实例?

+0

你能分享一个jsfiddle.net的链接吗?我想看看这是什么。 – Ovilia

+0

'this'是$(“#images img”)。在你的标签上点击(“click”,function(){ – khuderm

+0

),尝试包含一个名为'value'的临时属性,所以它就像。尝试提醒$(this).value()看到你得到正确的值 – skos

回答

2

尝试通过输出到控制台来探索该对象的内容。

使用Firebug for Firefox或Chrome集成开发者控制台与F12。

打开控制台,修改代码:

var img_src=$(this).attr("src"); 
console.log(img_src); 
$("#id").plugin({ 
    image:img_src 
}); 

,并检查输出。

$("img").attr("src")应该是字符串。

+0

[img,context:img,jquery:“ 1.9.0“,构造函数:函数,初始化函数,选择器:”“...]这是在控制台中打印出来的一系列其他信息,这些信息包含有关点击图像的各种信息。 – khuderm

+0

如果你登录'this'? – VDP

+0

@khuderm你最好在这里发布整个'click()'函数,所以我们可以看到里面是什么上下文。 – Deele

1

这实际上是一个CSS选择器问题!

它不会工作,因为#images img将无法​​正常工作!它应该是img#images来指代img与编号images

所以,如果你有HTML这样的:

<img id="img1" class="useImg" src="http://fc01.deviantart.net/fs71/f/2013/032/8/3/papa_happy_by_ovilia1024-d5tfw0h.png" width="30px" height="30px" /> 
<img id="img2" class="useImg" src="http://fc01.deviantart.net/fs70/f/2013/032/a/b/papa_horrified_by_ovilia1024-d5tfwdt.png" width="30px" height="30px" /> 

你应该使用:

$('img.useImg').on('click', function() { 
    alert($(this).attr('src')); 
}); 

运行演示在这里:http://jsfiddle.net/aM4xw/2/

+0

但是#images中有很多图片。我将如何获得正确的图像源? – khuderm

+0

@khuderm对不起,我错了......我在编辑新版本。 – Ovilia

+0

但是你这样做的方式,我必须为所有图像做点击事件 – khuderm

0

之所以ATTR是返回一个对象,而不是的源值是我使用的插件覆盖了attr函数。我修改它以返回src作为一个字符串,而不是一个对象。删除它也解决了问题,但插件需要定制的。感谢所有试图帮助我的人,我真的很感激。

+0

但是你知道''#images img“'不是明智的做法,对吧? – Ovilia