JQuery установить атрибут элемента - PullRequest
0 голосов
/ 19 августа 2010

В следующем коде

      <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 = стиль стиля остается неизменным = нет, что не так с кодом

Ответы [ 3 ]

1 голос
/ 19 августа 2010

Проблема в том, что у вас нет элементов с 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"});
}
1 голос
/ 19 августа 2010

Вместо этого:

$("#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 еще не существуют - они являются лишь частьюСтрока, которую вы построили.Вы запускаете логику «показа» для элементов, которые еще не существуют как таковые (поэтому ничего не происходит), и затем добавляете их к #tabledata ( без изменений к ихвидимость была применена).Это выглядит не по порядку, если только я что-то упустил.

Поскольку добавление происходит независимо от видимости, изменение последовательности не повредит:

$("#tabledata").append(html);
if( err_flag !== 1 ) {
    $("#err_msg").show();
    $("#cont").show();
}
0 голосов
/ 19 августа 2010

Не должно быть строки $("#tabledata").append(html); до // some more processing. Я обычно использую свойство css как $ ('селектор'). Css ('дисплей', 'блок') - нет необходимости создавать объект там. Другая рекомендация - использовать функции .hide / .show для управления видимостью (работает со всеми элементами во всех браузерах).

...