如何使用JS隐藏动态创建的元素?

时间:2014-02-03 12:31:09

标签: javascript jquery dynamic

我希望隐藏所有id#text-field的元素(如果浏览器支持JS,那就是为什么它应该用JS隐藏)。但是不要让它与使用这种方式创建的元素一起工作:

// Add post
$(document).on('click', 'a.add-post', function(event)
{
    // Create content based on a hidden item
    var newcontent = $('.type-post#post_id-hid-0').html();
    content = '<li class="type-post">' + newcontent + '</li>';

    // Place new content
    $('.posts-list > li.iteration-0').last().after(content);

    // Load necessary JS
    load_page();

    event.preventDefault();
});

我的 load_page()功能:

$(function()
{
    function load_page()
    {
        $('#text-field').hide();
    }

    load_page();
}

4 个答案:

答案 0 :(得分:3)

对文本字段使用类而不是ID,每个元素的ID都是唯一的,而为此可以再次使用类。

答案 1 :(得分:0)

一种轻量级解决方案,不需要任何JS执行,并且在首次加载时不会导致“跳跃”界面,并且元素会在用户眼前消失。

CSS:

#text-field{display:hidden;}

HTML:

<noscript>#text-field{display:block;}</noscript>

答案 2 :(得分:0)

你必须做两件事:

function load_page(){ //<----put this in global scope
   $('.text-field').hide(); //<---hide it with class name
}
$(function(){
   load_page();
});

所以现在你页面的某个地方你可能有<input type='text' id='text-field' />这里你可以用这种方式改变你的元素ID:

<input type='text' class='text-field' />

答案 3 :(得分:0)

如果你可以用你插入的动态页面相关类替换classname,这应该会有所帮助:

$(".classname[id='text-field']").hide();

$(".classname[id='text-field']").attr("style", "display:none");