2013-02-12 60 views
0

好的,我知道我的標題不是很豐富。讓我解釋。從另一個選擇框中選擇帶有Li元素的框

有一個頁面,我想用jQuery來完成。在他們的頁面(舊頁面)上,有一個選擇的下拉菜單,我將它帶到我的(新)頁面。他們的選擇下拉列表使用ul元素和li元素,而我的select使用選項元素。

以下是我有:

var totalQuestions = jQuery('.rcbItem').length; //get the total elements in theirs 

for (x = 0; x < totalQuestions; x++) //for loop to create the dropdown on mine 
{ 
    var questionText = jQuery('.rcbItem:eq(' + x + ')').html(); 

    jQuery('#selectQuestion').append(jQuery(document.createElement('option')).attr(
    { 
     'value' : "Question" + x 
    }).html(questionText)); 
} 

var strQuestion = jQuery('#ctl00_ContentPlaceHolder1_ddlQuestion_Input').val(); //gets the value currently in THEIR select field 

var objQuestionNext = jQuery("#selectQuestion").find("option:contains('" + strQuestion + "')"); 

objQuestionNext.attr(
{ 
    selected : 'true' 
}); //finds the question in MY list that matches THEIR select field, and then selects that one 

這是一個運行每次我從我的下拉列表中選擇一個問題時的代碼:

jQuery('#selectQuestion').change(function() 
{ 
    strQuestion = jQuery('#selectQuestion :selected').val(); //get the value of "option", which is Question + x 
    strAnswer = jQuery('#txtQuestionAnswer').val(); 

    intQuestionNumber = strQuestion.substr(8, 2).trim(); //gets the number (so Question + x becomes x) 

    jQuery('#ctl00_ContentPlaceHolder1_ddlQuestion_Arrow')[0].click(); //I click THEIR dropdown menu 

    jQuery('.rcbItem:eq(' + (intQuestionNumber-1) + ')').click(); //Select THEIR li element that matches MINE) 

    jQuery('#ctl00_ContentPlaceHolder1_ctbAnswer').val(strAnswer); 
}); 

這工作90%的時間。

但是,如果我選擇列表中最後一個選項,則會發生這種情況。它選擇它,這很好,但是如果我然後從列表中選擇另一個問題,它會開始選擇一個我想要的,然後繼續這樣做,直到我完全重新加載頁面。這隻有在我選擇我的下拉列表中最後一個元素時纔會發生。

我一直在關注這件事,並沒有找到答案。誰能提供一些見解?謝謝。

編輯:我終於找到了問題。在他們的代碼中,當點擊發生時,每個元素所擁有的.rcbItem類都被.rcbHover類覆蓋。所以要解決它,我基本上改變.rcbItem爲jQuery('.rcbList li')....,它現在完美。

謝謝你的幫助球員。

+1

你嘗試過調試它,看看它是怎麼回事了?你能在http://www.jsfiddle.net上創建一個演示嗎? – 2013-02-12 15:31:03

+0

至少向我們展示一些HTML標記會有所幫助。 – kidwon 2013-02-12 15:32:24

+0

不幸的是,我沒有任何HTML給你。我在頁面上唯一觸及的是Javascript。他們的東西在ASP中被嚴格編碼,而不是HTML,我不能碰它們,因爲它是他們的代碼。 – snowfi6916 2013-02-12 15:36:33

回答

0

你確定這一個沒問題嗎?

jQuery('#ctl00_ContentPlaceHolder1_ddlQuestion_Arrow')[0].click(); 

你觸發jQuery的.click不是jQuery的,但DOM元素

+0

這個特定的ID屬於「a」元素,所以我很肯定沒關係。 – snowfi6916 2013-02-12 16:09:13

相關問題