单击事件不触发选项卡中的动态添加按钮

时间:2016-10-03 05:21:31

标签: javascript jquery datatables

我有一个包含2个标签的页面。每个选项卡都加载了自己的DataTable和工具栏控件。根据哪个选项卡处于活动状态,我会动态添加相应的工具栏(使用自定义按钮)。但是,onclick事件不会触发选项卡内动态添加的元素。下面是我用于将控件添加到不同选项卡的代码:

 $("#tabs").tabs( {
        active: 0,//Tab no.2 "Sha-2" by default active on page load,
        "activate": function(event, ui) {
            var table = $.fn.dataTable.fnTables(true);

            if ( table.length > 0 ) {

                $(table).dataTable().fnAdjustColumnSizing();
                var active = $( "#tabs" ).tabs( "option", "active" );
                if(active == 0){ //add toolbar to tab index = 1
                    $("div.toolbar").html('');

                }
                if(active == 1){ //add toolbar to tab index = 1


                    $("div.toolbar").html('<a id= "add-vendor"class="ui-button ui-widget ui-corner-all">ADD VENDOR</a><a id= "create-purchase_order"class="ui-button ui-widget ui-corner-all">CREATE PO</a>');

                    $( "#add-vendor" ).button().on( "click", function() {
                    alert('hello');
                    });

                }
            }
        }
    } );

代码在文档就绪函数内。有人可以帮我抓住按钮的onclick事件吗?

3 个答案:

答案 0 :(得分:1)

它不起作用,因为您正在将锚标记转换为按钮。如果您删除按钮方法,那么它可以正常工作:

 $("div.toolbar").html('<a id= "add-vendor"class="ui-button ui-widget ui-corner-all">ADD VENDOR</a><a id= "create-purchase_order"class="ui-button ui-widget ui-corner-all">CREATE PO</a>');

  $( "#add-vendor" ).on( "click", function() {
      alert('hello');
  });

如果你想使用按钮,那么创建一个按钮标签而不是锚标签。

答案 1 :(得分:1)

$(document).on('click', "#add-vendor", function() {
           alert('hello');
   });

将执行操作,将事件委托给文档以获取动态添加的元素。

答案 2 :(得分:-1)

您需要委派动态添加的按钮:

$(*ParentOfTheDynamicallyAddedButton*).delegate("DynamicallyAddedButton", "click", function(){
   *your function*
   }

您可以说您的浏览器不知道动态添加的元素,因为它们不是脚本的一部分。它们只存在于DOM中,因此没有附加脚本。但不要引用我,我是一个菜鸟。