jQuery设置元素的属性

Posted

技术标签:

【中文标题】jQuery设置元素的属性【英文标题】:JQuery set attribute of an element 【发布时间】:2011-03-31 22:42:08 【问题描述】:

在下面的代码中

      <script>
       $(document).ready(function() 
     if(load_flag  == 0)
     
        var html = '';
        html += "<div id ='err_msg' style='display:none;'><b>Preview errors</b> <br></div>";
        html += "<div id ='cont' style='display:none;'><input type='button' value='Continue' onclick='javascript:save();' /></div>";

     //some more processing
      if(err_flag != 1)
      

        $("#err_msg").css("display" : "block");
        $("#cont").css("display" : "block");
      
        $("#tabledata").append(html);
    );
   </script> 

  <div id="tabledata"></div>

err_msg 显示,但 id=cont 样式仍然 style=none 代码有什么问题

【问题讨论】:

【参考方案1】:

问题是,您没有将 ID="err_msg" 和 ID="cont" 的元素插入到文档中。 首先运行 $("#tabledata").append(html);然后进行 CSS 更改。

$("#tabledata").append(html);
if(err_flag != 1)

   $("#err_msg").css("display" : "block");
   $("#cont").css("display" : "block");

【讨论】:

【参考方案2】:

而不是这个:

$("#err_msg").css("display" : "block");
$("#cont").css("display" : "block");

试试这个:

$("#err_msg").show();
$("#cont").show();

此外,在您正在构建的那个 HTML 字符串中,您有一个这样的 onclick 处理程序:

onclick='javascript:save();'

暂且不论是否最好在此处分配处理程序,您应该这样做:

onclick='save();'

onclick 处理程序被理解为 JavaScript。

更新:再次仔细查看您的代码,看起来在您运行“显示”逻辑(或样式分配)时,DOM 中尚不存在元素 - - 它们只是您构建的字符串的一部分。您在尚不存在的元素上运行“显示”逻辑(因此没有任何反应),然后然后将它们附加到#tabledata没有更改已应用它们的可见性)。这似乎不合顺序,除非我遗漏了什么。

由于无论可见性如何都会发生追加,因此更改顺序没有害处:

$("#tabledata").append(html);
if( err_flag !== 1 ) 
    $("#err_msg").show();
    $("#cont").show();

【讨论】:

【参考方案3】:

不应将$("#tabledata").append(html); 排在// some more processing 之前。 我通常将 css 属性用作 $('selector').css('display', 'block') - 无需在那里创建对象。另一个建议是使用 .hide/.show 函数来控制可见性(适用于所有浏览器的所有元素)。

【讨论】:

以上是关于jQuery设置元素的属性的主要内容,如果未能解决你的问题,请参考以下文章

jQuery学习笔记-设置元素的属性和样式

jQuery_2操作dom元素

处理元素(jQuery)

10分钟-jQuery操作DOM元素

jQuery属性的操作

如何使用 jQuery 取消设置元素的 CSS 属性?