为什么我的jQuery .css函数不起作用?

时间:2012-03-23 04:47:49

标签: javascript ajax jquery

我正在构建某种与mySQL连接的添加/删除标记列表。我已经设法从数据库中获取标签以显示ajax调用,但我无法对它们进行任何操作。甚至没有共同的风格。当我用Firebug检查时,所有的html似乎都已到位,所以我无法弄清楚出了什么问题。这是我的代码:

jQuery的:

 $(document).ready(function() {

   $("#ontvangenjson").css("border","3px solid red");


   $.getJSON("jason2.php", function(data) {

      $.each(data, function(){

        var merkTag = " <a class=\"deletemerk\" href="+"http://localhost/website/remove_merk.php?id="+this.pkFavorietemerken+">" + this.merken + "</a>";

         $("#ontvangenjson").append(merkTag);

               });

           });

       });

PHP: jason2.php

 $merken_lijst = "SELECT favorietemerken.pkFavorietemerken, favorietemerken.merken FROM favorietemerken JOIN bedrijven ON bedrijven.pkBedrijvenID=favorietemerken.fkBedrijvenID WHERE favorietemerken.fkBedrijvenID=$neem_id";


 $rows = array();
 $sth = mysql_query($merken_lijst);
 while($r = mysql_fetch_assoc($sth)) {
 $rows[] = $r;
}
print json_encode($rows);

RECEIVED JSON:

 [{"pkFavorietemerken":"71","merken":"Nike"},{"pkFavorietemerken":"70","merken":"Le Coq Sportif"},{"pkFavorietemerken":"69","merken":"Converse"},{"pkFavorietemerken":"68","merken":"Champion"},{"pkFavorietemerken":"67","merken":"Adidas"}] 

HTML:

<body>


  <h1><label for="brands-form-brand">Get JSON data</label> <input type="button" id="knop" value="get JSON" /></h1>

  <hr />

  <p class="section-title"><strong>JSON Data received</strong></p>


  <div id="ontvangenjson">  </div> 

</body>

ANSWER

经过很多很多研究,我最终解决了这个问题。代码并没有真正错误,但其中一部分是错误的。 get.JSON是异步的意思,如果你想使用jQuery .css函数进行任何更改,你需要在getJSON的回调中做到这一点。

  $.getJSON("jason2.php", function(data) {
   var merkTag = "";
  $.each(data, function(){
  merkTag += " <a class=\"deletemerk\" href="+"http://localhost/website/remove_merk.php?id="+this.pkFavorietemerken+">" + this.merken + "</a>";
  });

  $("#ontvangenjson").append(merkTag);

  // NEW CODE
  $(".deletemerk").css("border","3px solid red");
  }); 

3 个答案:

答案 0 :(得分:4)

border不支持速记属性(例如jQuery.css())。

http://api.jquery.com/css/

答案 1 :(得分:1)

如果你想使用border的所有三个属性,尝试独立定义它们,它可能会解决你的问题。

答案 2 :(得分:0)

我不确定这会解决您的问题,但我会先尝试清理您建立链接的方式。您可能错过了一两个引号。而不是逃避或无法逃避双引号的混淆,只需用单引号括起你的字符串:

var merkTag = '<a class="deletemerk" href="http://localhost/website/remove_merk.php?id='
              + this.pkFavorietemerken 
              + '">' 
              + this.merken 
              + '</a>';

这使您可以在构建HTML字符串时自由使用双引号。为了清楚起见,我在这里使用了多行。清晰而简洁。