2011-03-27 43 views

回答

1

因爲形式發佈的國家變回和被選擇的國家時下拉被重建。點擊事件似乎傳播到張貼表單的東西。 這可以通過添加e.preventDefault()的點擊功能可以防止:

// when a language is clicked, make the selection and then hide the list 
$(".dropdown dd ul li a").click(function(e) { 
    var clickedValue = $(this).parent().attr("class"); 
    var clickedTitle = $(this).find("em").html(); 
    $("#target dt").removeClass().addClass(clickedValue); 
    $("#target dt em").html(clickedTitle); 
    $languageList.hide(); 
    $dropTrigger.removeAttr("class"); 
    e.preventDefault(); 
}); 

我會嘗試尋找到它的一些更多的嘗試找出原因標誌沒有被改變。

編輯: 好像別人給我發前解決標誌問題:P

無論如何,這是我想出瞭解決方案:

var clickedValue = $('em', this).attr("class"); 
+0

NVM我改成了返回false;它的工作原理 – Steven 2011-03-27 21:52:48

+0

@Steven:怪e.preventDefault()不起作用。它在我的jsfiddle中運行良好。你記得在參數列表中添加e到匿名函數嗎? (即$(「下拉DD UL李一」)。點擊(函數(E)) – Oscar 2011-03-27 22:07:09

1

標誌ISN」因爲你沒有像在.click()中預期的那樣獲得標誌圖像的類。如果你改變你的點擊()像我有下面,你將獲得新的名稱和標誌像你期望:

// when a language is clicked, make the selection and then hide the list 
    $(".dropdown dd ul li a").click(function() { 
     var clickedValue = $(this).find("em").attr("class"); 
     var clickedTitle = $(this).find("em").html(); 
     $("#target dt em").removeClass().addClass(clickedValue); 
     $("#target dt em").html(clickedTitle); 
     $languageList.hide(); 
     $dropTrigger.removeAttr("class"); 
    }); 
}); 

的形式回發導致一切辦法去重建它是什麼,然後重置該標誌和國家的名字。

0

說實話我要去投了兩個其他的努力,因爲他們是很好的解決方案,但我不認爲你的代碼是哪裏錯了 - 這是導致問題的點擊後的回傳。簡單的返回false;應該停止這一點。

// when a language is clicked, make the selection and then hide the list 
    $(".dropdown dd ul li a").click(function() { 
     var clickedValue = $(this).parent().attr("class"); 
     var clickedTitle = $(this).find("em").html(); 
     $("#target dt").removeClass().addClass(clickedValue); 
     $("#target dt em").html(clickedTitle); 
     $languageList.hide(); 
     $dropTrigger.removeAttr("class"); 
     return false; 
    }); 
}); 
+0

啊哈剛剛看了你的評論,你已經做到了這一點,這些jQuery的難題總是與時間賽跑! – amelvin 2011-03-27 21:57:33