变更选择不正常

时间:2018-04-18 15:49:11

标签: javascript jquery html5

我试图做一个简单的选择,生成下一个选择框... 但我似乎无法使其发挥作用

所以,你可以看到我正在创建具有ID和父级的div,当我点击第一个选择值时,生成带有div和父值的下一个选择框。

这是jQuery,但由于某种原因,我无法理解为什么它不起作用。

$(document).ready(function() {
  var i = 1;
  var t = '#ss' + i;
  $(t).change(function() {
    i++;
    t = '#ss' + i;
    var pick = $(this).val();
    $('#picks div').each(function() {
      if ($(this).attr('parent') == pick) {
        $('#ss' + i).append('<option value=' + $(this).text() + ' >' + $(this).text() + '</option>');
      }
      $('#ss' + i).removeAttr('disabled');
    })
    console.log(t);
  })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='picks'>
  <div id='29' parent='26'>Pick1</div>
  <div id='30' parent='29'>Pick11</div>
  <div id='31' parent='26'>Pick</div>
</div>

<select id="ss1">
        <option >First pick</option>
        <option value="26">Angri</option>
        <option value="27">lands</option>
        <option value="28">tree</option>
    </select>
<select id="ss2" disabled>
        <option >Secound Pick</option>
    </select>
<select id="ss3" disabled>
        <option>Third Pick</option>
    </select>

这是一个jsfiddle jsfiddle

2 个答案:

答案 0 :(得分:0)

下面的代码只会将更改侦听器附加到第一个ss ss1,因此当您更改ss2时,永远不会调用更改函数。

  var i = 1;
  var t = '#ss' + i;
  $(t).change(function() {

您可以通过在每个选择上添加一个类并使用$(".myClass").change(function() {

来解决此问题

或者您可以将侦听器附加到所有选择$("select").change(function() {

option标记的值也不包含“父”号。在这种情况下,它将是PickPick1Pick11

$('#ss' + i).append('<option value=' + $(this).text() + ' >' + $(this).text() + '</option>');

答案 1 :(得分:0)

这是你拍摄的吗? https://jsfiddle.net/6c5t8ort/

有几件事,

Dim HTMLDoc As HTMLDocument Dim MyBrowser As InternetExplorer Sub RepsolLogin() Dim MyHTML_Element As IHTMLElement Dim MyURL As String Dim form As HTMLFormElement MyURL = "https://login.repsol.com/es/Landing/AuthnPage?returnUrl=https://www.repsol.com/es_es/" Set MyBrowser = New InternetExplorer MyBrowser.Silent = True MyBrowser.navigate MyURL MyBrowser.Visible = True Do DoEvents Loop Until MyBrowser.ReadyState = READYSTATE_COMPLETE Set HTMLDoc = MyBrowser.document Do While HTMLDoc.getElementById("gigya-login-form") Is Nothing DoEvents Loop Set form = HTMLDoc.getElementById("gigya-login-form") form.all.UserName.Value = "xxx@xxx.com" 'Enter your email id here form.all.Password.Value = "password" 'Enter your password here form.submit End Sub

这只会将var t = '#ss' + i; $(t).change(function() { 事件添加到第一个下拉列表中。如果你给jQuery一个选择器(一个类),如果将事件添加到所有元素。您设置change变量的方式也意味着它会在每次更改时递增。