Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将元素添加到主体后运行javascript_Javascript_Jquery_Asp.net Mvc 3 - Fatal编程技术网

将元素添加到主体后运行javascript

将元素添加到主体后运行javascript,javascript,jquery,asp.net-mvc-3,Javascript,Jquery,Asp.net Mvc 3,我有一个元素,除非某些功能被激活,否则它不会出现在页面上。我想在页面上显示此后将其删除 当且仅当添加此元素时,如何运行JavaScript代码 我是新手,希望能得到一些帮助。谢谢 元素是由jquery生成的,并且只有类名 详细说明: 我正在现有web应用程序中实现excel导出。 我正在使用一个表单围绕过滤器进行搜索,并使用ajaxgrid gridstate。 此表单将提交给具有相应viewmodels的控制器 我提交表格的代码如下: $(function () { $('div.bt

我有一个
元素,除非某些功能被激活,否则它不会出现在页面上。我想在页面上显示此
后将其删除

当且仅当添加此
元素时,如何运行JavaScript代码

我是新手,希望能得到一些帮助。谢谢

元素是由jquery生成的,并且只有类名

详细说明:

我正在现有web应用程序中实现excel导出。
我正在使用一个表单围绕过滤器进行搜索,并使用ajaxgrid gridstate。 此表单将提交给具有相应viewmodels的控制器

我提交表格的代码如下:

$(function () {
    $('div.btn-group #export-citizen-list').on('click', function () {
        var gridstate = $('#citizenIndexGrid').ajaxgrid('getState');
        var form = $('#create-citizen-csv-file');

        // add ajaxgrid state to post data
        $.each(gridstate, function (k, v) {
            form.addAjaxgridHidden(k, v);
        });

        // submit entire form, with ajaxgrid state
        form.submit();

        // remove all hiddenfields that belongs to ajaxgrid
        form.find(":hidden.ajaxgrid").remove();
        document.getElementById("filterSearch").className = "default ui-button ui-widget ui-state-default ui-corner-all";
        $('#filterSearch').removeAttr('disabled');
// function that removes unwanted <div> ---->$('.ajaxWorkingNotification').slideUp();
    })

    jQuery.fn.addAjaxgridHidden = function (name, value) {
        return this.each(function () {
            var input = $('<input>').attr('type', 'hidden').attr('name', name).attr('class', 'ajaxgrid').val(value);
            $(this).append($(input));
        });
    };
});
$(函数(){
$('div.btn-group#导出公民列表')。在('click',函数(){
var gridstate=$('citizenIndexGrid').ajaxgrid('getState');
var form=$(“#创建公民csv文件”);
//将ajaxgrid状态添加到post数据
$.each(网格状态,函数(k,v){
表.addAjaxgridHidden(k,v);
});
//提交完整的表格,带有ajaxgrid状态
表单提交();
//删除属于ajaxgrid的所有隐藏字段
form.find(“:hidden.ajaxgrid”).remove();
document.getElementById(“filterSearch”).className=“默认ui按钮ui小部件ui状态默认ui角点全部”;
$('过滤器搜索').removeAttr('禁用');
//删除不需要的-->$('.ajaxWorkingNotification').slideUp()的函数;
})
jQuery.fn.addAjaxgridHidden=函数(名称、值){
返回此。每个(函数(){
变量输入=$('').attr('type','hidden').attr('name',name).attr('class','ajaxgrid').val(value);
追加($(输入));
});
};
});
当我提交表单时,excel被下载,不需要的
被插入DOM中。问题是,在这种情况下,我不知道何时返回回发。因此,我不知道何时插入此


希望这能澄清我的问题。

你可以这样做

// Assuming your element is created by this line ...
$(".your_elements_class_name").ready(function() {
    // write code here
    // this is executed after the element is created and added to DOM
})

您可以通过在DOM节点插入事件上实现侦听器来实现这一点

有一个关于如何检测DOM节点插入的解释&纯javascript代码演示了它是如何工作的

如果您喜欢jQuery版本,那么下面是我从上面的链接翻译的示例代码

HTML:

Javascript:

$(function () {
    $('#addme').click(function () {
    var div = $('<div/>').attr('id', 'mydiv').html("Hello");
    $('#container').append(div);
  });

  var handler = function (e) {
    if (e.originalEvent.animationName == "nodeInserted")
        alert("An HTMLElement has been inserted to DOM tree !")
  };

  var eventSignature = 'MSAnimationStart';
  if ($.browser.webkit) eventSignature = 'webkitAnimationStart';
  if ($.browser.mozilla) eventSignature = 'animationstart';
  $(document).on(eventSignature, handler);
});
$(函数(){
$('#addme')。单击(函数(){
var div=$('').attr('id','mydiv').html(“你好”);
$(“#容器”).append(div);
});
变量处理程序=函数(e){
如果(e.originalEvent.animationName==“节点插入”)
警报(“已将HTMLElement插入到DOM树中!”)
};
var eventSignature='MSAnimationStart';
如果($.browser.webkit)eventSignature='webkitAnimationStart';
if($.browser.mozilla)eventSignature='animationstart';
$(文档).on(事件签名,处理程序);
});

也许您可以使用Jquery的隐藏和显示-。加载页面时隐藏该元素,如果要显示该元素,则可以显示该元素。@ramilu页面已加载。但是没有插入div。它只在按下按钮时插入。在这种情况下,当您通过代码添加元素时,为什么不能执行其他代码呢。也许你可以用例子详细解释你的问题,然后我可以为你提供一个解决方案。@Ramilu问题更新。希望这有帮助。我已经更新了我的问题,我希望是澄清我的问题。这仍然有效吗?无论发生什么&当垃圾元素被插入到DOM树中时,这都将始终有效。只需将
#container
div#mydiv
替换为真正的定位器,就可以了。
@keyframes nodeInserted {  
    from { opacity: 0.99; }
    to { opacity: 1; }  
}

#container div#mydiv {
    animation-duration: 0.001s;
    animation-name: nodeInserted;
}
$(function () {
    $('#addme').click(function () {
    var div = $('<div/>').attr('id', 'mydiv').html("Hello");
    $('#container').append(div);
  });

  var handler = function (e) {
    if (e.originalEvent.animationName == "nodeInserted")
        alert("An HTMLElement has been inserted to DOM tree !")
  };

  var eventSignature = 'MSAnimationStart';
  if ($.browser.webkit) eventSignature = 'webkitAnimationStart';
  if ($.browser.mozilla) eventSignature = 'animationstart';
  $(document).on(eventSignature, handler);
});