当传递参数给jquery插件时,如何为javascript对象指定一个变量属性
How to specify a variable property for a javascript object when passing arguments to a jquery plugin
我正在我的网站上实现这个jQuery图像缩放器。它的工作原理是我有这样的HTML标记:(Fiddle)
<a class="zoom" href="bigimage.jpg">
<img src="smallimage.jpg" />
</a>
然后我需要像这样激活插件:(注意插件是在图像的父容器上调用的,在这种情况下是<a>
标签,而不是图像本身)
$(function() {
$('a.zoom').zoom({url: 'bigimage.jpg'});
});
正如你所看到的,我已经在激活代码中指定了大图的url。是否有一种方法来获得大图像url从图像的父的href,或者也许在html中的data-bigimage
属性?
E。
$('a.zoom').zoom({
url: $(this).attr('href') // or $(this).data('bigimage')
});
这显然不起作用,但希望表明需要什么
如果没有url参数,插件会首先查找data-src属性,所以你可以这样做:http://jsfiddle.net/3ktNJ/33/
将大图的URL放在data-src属性中:
<a class="zoom">
<img data-src="http://placekitten.com/400/600" src="http://placekitten.com/200/300" />
</a>
<br>
<a class="zoom">
<img data-src="http://placekitten.com/500/700" src="http://placekitten.com/200/300" />
</a>
调用不带URL参数的函数:
$('a.zoom').zoom();
如果你在那里没有工作,你可以尝试:
$(function(){
$('a.zoom').each(function(){
var thisURL = $(this).attr('href');
$(this).zoom({url: thisURL});
});
}
你的小提琴在这里更新:http://jsfiddle.net/3ktNJ/1/
UPDATE每个OP请求,对插件进行了小更改。这并不影响插件的正常使用:
本节已编辑:
if (!settings.url) {
$urlElement = $source.find('img');
if ($urlElement[0]) {
settings.url = $urlElement.data('src') || $urlElement.attr('src');
}
if (!settings.url) {
return;
}
}
对此:你会注意到我在这里添加了一个额外的'if'语句来遍历URL管理器。我仍然不确定为什么!settings.url
说假,即使它输出一个真正的URL字符串…但这似乎有效。
if (!settings.url) {
if ($(target).attr('href')) {
settings.url = $(target).attr('href');
} else {
$urlElement = $source.find('img');
if ($urlElement[0]) {
settings.url = $urlElement.data('src') || $urlElement.attr('src');
}
if (!settings.url) {
return;
}
}
}
作为一个额外的奖励,专门为您的需要,您不必提供小图像的父href源。如果您不提供URL,它将自动抓取并使用它。您将注意到,在提琴的底部,它没有发送任何URL,但它仍然按计划工作。然后,如果您删除<a>
中的href
,它将像以前一样正常工作(这无论如何都不理想)。
我希望这对你有帮助!
如果我理解正确…你想要得到图像的父div的href。这应该能奏效:
$("img").parent(".zoom").attr("href");
我将它添加到您的小提琴的顶部行:http://jsfiddle.net/mN7m3/
相关文章:
- 如何从对象的原型方法访问JavaScript对象属性
- 如何将数组项添加到对象属性中
- 设置嵌套对象属性的更好方法
- JavaScript管理具有重复属性名称的对象属性
- 如何使用element.myobj.prop等具有对象属性的元素
- 如何使用(this)访问Angular 2 http rxjs catch函数中的对象属性
- Es6:能够在设置/更新/删除对象属性时调用自定义方法
- 如何在AngularJS工厂中正确声明对象属性
- 如何使用object.assign()从其他对象引用基本对象属性
- 使用XPath样式访问Javascript JSON对象属性
- 将javascript对象(属性+值)合并到一个对象中
- 数组:使对象属性成为数组键
- 无法从JavaScript中的函数调用对象属性
- Google Closure Advanced |无法识别对象属性|动态属性
- Javascript从匿名函数访问外部对象属性
- 从函数更改对象属性
- 如何从字符串变量访问对象属性
- 从嵌套对象属性中获取排除某个值的最高值
- 在Aurelia computeds中,当设置依赖关系时,如何声明对对象属性的依赖关系
- 传递数量不确定的可能嵌套的对象属性