javascript - jquery 创建选择,并在更改时触发

标签 javascript jquery select

我似乎无法让它工作。我正在使用 jquery 创建一个 html 选择,我希望在它的值发生变化时执行一些代码。

代码如下:

<script type ="text/javascript">

   var firstweddingturn = '400';

   $('#weddingturn').change(function() {

      alert ("Wedding select change triggered!");

      //var wedturn = $('#weddingturnselectid').val();
      //$('#div3').append('<br>Wedding turn selected, ' + wedturn + '</br>')

    });


    $(document).ready(function() {

      var html = [];
      html[html.length] = '<select name="weddingturn" id="weddingturn">';
      var a = firstweddingturn;
      var b = Number(firstweddingturn) + 16;
      while (a < b) {
        // do some code
        html[html.length] = '<option name="asdf" value = "1">' + a + '</option>';
        a++;
      }  // end while
      html[html.length] = '</select>';
      $('#div1').append(html.join('')); 

    });
</script>

我做错了什么?

最佳答案

您需要使用 .delegate() (或 .live() )因为您正在动态添加选择。当您使用 .change() 附加 onChange 处理程序时它仅附加到<​​strong>现有 匹配元素,而不是以后添加的元素。要将事件附加到所有匹配元素,包括后来添加到页面的元素,您可以使用 .delegate()函数,像这样:

$('body').delegate('#weddingturn','change', function(){
  alert('Wedding select changed to ' + $(this).find('option:selected').val() );
});

但是,正如一些人指出的那样,您只需在添加 <select> 之后立即附加事件处理程序即可。到 DOM。这样,您仍然可以使用 .change()并且您的代码应该运行得更快。

关于javascript - jquery 创建选择,并在更改时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7126429/

相关文章:

javascript - WinRT 拒绝访问文件

javascript - org.openqa.selenium.WebDriverException : unknown error: Runtime. 评估抛出异常:SyntaxError:无效或意外的标记

python - 使用 for 循环从数据框中选择一个值

c - 选择不工作的 Unix C

javascript - 如何针对 IE 进行优化?

javascript - 有没有可靠的方法来获取用户的 IP,尽管他们在代理或类似的后面?

jquery - 如何隐藏(显示:none) parent div when child(img) fails to load?

javascript - HTML 自定义属性和 IE

javascript - 在javascript中获取表单名称

使用 LEFT JOIN 和 CASE 语句的 SQL 查询