src和attr(' src',variableName)有什么区别?在我看来,我做同样的事情。为图像源属性指定值。
我正在编写一些jQuery并且在一个地方src工作,但不在另一个地方,而在另一个地方,attr(' src',variableName)工作,而另一个没有'吨。
这是我的代码:
$( document ).ready( function() {
function imageSnap() {
$( 'p img' ).each( function() {
// Store image selector
var image = $( this );
// Store image source
var imageSrc = image.attr('data-src');
// Create new image and assign image source
var newImage = new Image();
newImage.src = imageSrc; // HERE // works
//newImage.attr( 'src', imageSrc ); // doesn't work
// Execute on image load
image.load( function() {
// Store native image dimensions
var nativeWidth = newImage.width;
var nativeHeight = newImage.height;
// more code stuffs
console.log( 'nativeWidth ' + nativeWidth );
console.log( 'nativeHeight ' + nativeHeight );
});
// Load image
//image.src = imageSrc; AND HERE // doesn't work
image.attr('src', imageSrc ); // works
});
}
// Execute on document ready
imageSnap();
});
答案 0 :(得分:3)
他们是同一件事,但第一件事(.src
)不起作用,因为$(this)
是从jQuery选择器中提取的($(this)
是你的{ {1}}变量)和image
是来自原生JavaScript的方法,jQuery在您使用其选择器时无法识别。
答案 1 :(得分:2)
var newImage = new Image();
newImage.src = imageSrc; // works
//newImage.attr( 'src', imageSrc ); // doesn't work
这不起作用,因为var newImage = new Image();
不是jquery语法。因此,它不会创建对jquery对象的引用,因此作为jquery方法的方法.attr()
将不起作用。但是.src
会因为那是标准的js。
var image = $( this );
这是引用jquery对象。因此,当您稍后在其上调用.attr()
时,它将按预期分配。
答案 2 :(得分:1)
简单的答案是,newImage
与image
不是同一个对象。第一个是类型为Image()
的对象,其变量为src
,而第二个是JQuery集合对象,其src
属性位于内部,可通过attr
访问功能