JQuery设置元素的属性

时间:2010-08-19 05:35:28

标签: jquery jquery-plugins jquery-selectors jquery-validate

在以下代码中

      <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代码有什么问题

3 个答案:

答案 0 :(得分:1)

而不是:

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

试试这个:

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

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

onclick='javascript:save();'

不管这里是否最好分配处理程序,你应该这样做:

onclick='save();'

onclick处理程序被理解为JavaScript。

更新:仔细查看您的代码,看起来当您运行“show”逻辑(或样式分配)时,DOM中尚不存在这些元素 - - 它们只是你构建的字符串的一部分。您对尚未存在的元素运行“show”逻辑(因此没有任何反应),然后 将它们附加到#tabledata不带已应用其可见性的变化)。这看起来不合时宜,除非我遗漏了什么。

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

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

答案 1 :(得分: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 :(得分:0)

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