2012-08-02 167 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