1

我什至不确定我是否以正确的方式询问或解决这个问题,但如果我只是展示它可能会更容易。基本上,我试图通过 a运行attr每个diva并让它根据该 div 的属性返回不同的结果。 parameterfunction

如您所见,该示例是一组下拉菜单,当您单击容器 div 中的链接时会出现这些下拉菜单。如果您进行选择,它会将其保存为父 div 中的属性。当您单击退出然后返回容器时会出现问题......而不是使用适当的默认值或选择显示重新显示每个下拉列表,它只是反映它a旁边的结果。

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

TIA

4

2 回答 2

2

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

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

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

于 2012-08-02T00:58:33.703 回答
1

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

使用这一行,您将获得两个 div,因此您更改了两个值(如果该值是从下拉列表中选择的)。

要正确恢复选定的值:

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/

于 2012-08-02T02:48:51.240 回答