2012-08-02 170 views
1

我甚至不确定我是以正确的方式询问或讨论这个问题,但如果我只是展示它,可能会更容易。基本上,我试图通过function运行divattr作为parameter,并让它根据该div的属性返回不同的结果。Jquery - 动态地将参数传递给函数

如您所见,这个例子是当您点击容器div中的链接时出现的一组下拉菜单。如果您做出选择,则将其作为attr保存在父div中。点击时出现问题,然后返回容器...而不是使用适当的默认或选择显示重新显示每个下拉菜单,它只是反映了旁边的a的结果。

http://jsfiddle.net/nosfan1019/b7F6x/5/

TIA

+1

尝试添加一些评论以您的示例为例,这很难阅读,imho – ted 2012-08-02 00:28:44

+1

尝试将您的变量重命名为比'asdf'和'eeee'更清晰的内容。 – Blender 2012-08-02 00:32:57

+0

对不起。通过并添加了评论和更好的变量。 http://jsfiddle.net/nosfan1019/b7F6x/5/ – 2012-08-02 00:41:58

回答

1

foo = foo.find('.dropdown-toggle').html(_new + '<b class="caret"></b>');

这一行你得到两个div,因此你已经更改这两个值(如果从droplist选择的值)。

要正确恢复所选值:

function modified(_select) { 
    console.log("modify"); 
    foo = $('#box').html(); 
    foo = $(_select).html(foo); 
    // iterate on collection to restore selected value from selection tag; 
    foo.filter("div[selection]").each(function(i, v){ 
     var selected = $(v).attr('selection'); 
     $(v).find('.dropdown-toggle').html(selected + '<b class="caret"></b>');     
    });     
} 

然后,它的需要,如果任何parentDiv有[选择] ATTR进行检查:

http://jsfiddle.net/b7F6x/50/

+0

我爱你的男人!太感谢了。 – 2012-08-02 03:38:07

2

我插入一些console.log()报表,看看与你的各种jQuery选择发生。我遵守下列规定:

  • 当我在第一个“点击”节点点击,_container是“顶一个”,在你的三个div的迭代
  • 因此,可以选择带班两个div的“DD”载在类的顶部有一个“
  • 参数_attr和你传递给你的函数select()是对于被处理的每个节点相同,使您在“DD”箱相同的结果_parent股利。

我想你想改变你用来定位节点的选择器来修改。

+0

这就是我想在某种意义上描述的东西。所以它不是传递某种形式的数组作为参数,你不觉得? – 2012-08-02 01:03:11

+0

我不认为问题是参数和函数调用,我认为它只是选择你想要采取的对象。如果你注释掉else:'// $(this).find('。dd')。empty();'这是否会给你想要的行为?这也明确地清除了其他两个“顶级”div中的两个div。 – dsh 2012-08-02 01:21:40

+0

不完全,但可能必须工作。这个想法是,当页面的另一部分被占用时,它们隐藏或转到纯文本。哦,好吧......我感谢你的帮助 – 2012-08-02 01:25:26