好的,我知道我的标题信息量不大。让我解释。
我正在尝试使用 jQuery 完成一个页面。在他们的页面(旧页面)上,有一个选择下拉菜单,我将其带到我的(新)页面。他们的选择下拉菜单使用带有 li 元素的 ul,而我的使用带有选项元素的选择。
这是我所拥有的:
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% 的时间里都有效。
但是,如果我选择列表中的最后一个选项,就会发生这种情况。它选择它,这很好,但如果我从列表中选择另一个问题,它会开始选择我想要的问题正上方的问题,并继续这样做,直到我完全重新加载页面。仅当我选择下拉列表中的最后一个元素时才会发生这种情况。
我一直在为此绞尽脑汁,并没有找到答案。谁能提供一些见解?谢谢。
编辑:我终于找到了问题。在他们的代码中,当点击发生时,他们的每个 li 元素所具有的 .rcbItem 类都被 .rcbHover 类覆盖。所以要修复它,我基本上将 .rcbItem 更改为jQuery('.rcbList li')....
现在它可以完美运行。
谢谢你们的帮助。