2013-02-04 151 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