Jquery - 动态地将参数传递给函数

时间:2012-08-02 00:13:14

标签: javascript jquery function parameters parameter-passing

我甚至不确定我是以正确的方式询问或谈论这个问题但如果我只是展示它可能会更容易。基本上,我试图通过attrdiv parameter作为function运行,并根据该div的attr返回不同的结果。

如您所见,该示例是单击容器div中的链接时显示的一组下拉列表。如果您进行选择,则将其保存为父div中的attr。当您单击,然后返回容器时出现问题...而不是使用相应的默认或选择显示重新显示每个下拉列表,它只是镜像它旁边的a的结果。

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

TIA

2 个答案:

答案 0 :(得分:2)

我插入了一些console.log()语句,以查看各种jQuery选择器发生了什么。我观察到以下内容:

  • 当我点击第一个“点击”节点时,_container是“顶一个”
  • 因此,在你的三个div的迭代中,你选择了div中包含类'dd'的两个div,类为'top one'
  • 您传递给函数_attr的参数_parentselect()对于每个处理的节点都是相同的,这两个'dd'框的结果相同。

我认为您想要更改用于定位要修改的节点的选择器。

答案 1 :(得分: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中的任何一个具有[selection] attr:

,则需要检查它
if($(y).filter("div[selection]").length > 0){
    return modified(y);
}         

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