2013-04-30 78 views
-1

我已经对标题表示歉意,但我真的不知道如何提出这个问题,除非以此为例。

比方说,这是我的HTML

<img class="balloon" color="yellow" src="img_1.png"> 
<img class="balloon" color="red" src="img_2.png"> 
<img class="balloon" color="red" src="img_3.png"> 

现在让我们假设我有一个jQuery插件party()和我想的颜色传递给插件每个img

这是唯一的方法吗?

$('.balloon').each(function() { 
    $(this).party({ 
     party_color:$(this).attr('color'), 
     other_param1:'xyz', 
     foo:'bar' 
    }); 
}); 

或者可以这样的东西以任何方式工作?

$('.balloon').party({ 
    party_color:$(this).attr('color'), 
    other_param1:'xyz', 
    foo:'bar' 
}); 

如果我试试这个,我会得到document -element。这是一种耻辱,因为第二种方法似乎对我更有效。有没有一种方法可以直接引用参数值中的特定img$(this)观察不起作用。

+1

扩展代码并使'party'代码读取属性。 – epascarello 2013-04-30 21:52:10

+0

大量的插件允许参数是正是这个原因的函数,所以它们允许像'party_color:function(){return $(this).attr('color'); } - 这是你的插件吗? – 2013-04-30 21:54:34

+0

@Paolo Bergantino看起来有保证,但是'$(this)'似乎还不是匹配的元素,如果你把它包装在一个函数中。 – 2013-04-30 22:03:27

回答

1

只要获取插件内部的颜色,无论如何在插件中访问元素时都不需要使用元素属性作为插件的选项?

$('.balloon').party(); 

$.fn.party = function() { 
    return this.each(function() { 
     var this_party_color = $(this).attr('color'); 


     // the rest of the plugin 

    }); 
} 
+0

我知道,但我现实生活中的问题比较复杂。我必须使用我的元素的属性作为一个键来查找数组中的另一个值,这是插件无法访问的。 – 2013-04-30 21:55:08

+1

然后将数组传递给插件? – adeneo 2013-04-30 21:55:57

+0

我可以做到这一点,但调用插件的代码理解数组并将其转换为插件可以使用的数据(以参数形式)更合乎逻辑。我知道这个问题似乎并不成功的感觉,但主要是因为我想在jQuery中获得更多的洞察力。我已经有一个工作的例子(我的第一个例子),但不知何故,我有一种感觉,第二个例子也应该工作.. – 2013-04-30 22:08:18

相关问题