2

我在下面有这段代码:

<html>
<head>
  <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
  <script src="http://ui.jquery.com/latest/ui/effects.core.js"></script>
<style type="text/css">
  p { cursor: pointer; font-size: 1.2em; }
  .selected { color:red; }
</style>
  <script>
  $(document).ready(function() {
    $('p').click(function () {
      $(this).removeClass('selected', 1000);
      $(this).removeAttr('class');
      //$(this).removeAttr('style');
    });
  });
  </script>
</head>
<body style="font-size:62.5%;">

<p class="selected">Click me to remove 'selected' class.</p>
<p class="selected">Click me to remove 'selected' class.</p>
<p class="selected">Click me to remove 'selected' class.</p>

</body>
</html>

因此,当我单击任何<p>类时,该类确实会被删除,并且属性类也会被删除。然而,发生的情况是代码 style="" 被注入到<p>.

为什么会发生这种情况以及如何删除它?对我来说,单击一个<p>元素后,新定义<p>应该只是<p>some text goes here</p>

4

1 回答 1

3

为什么会有这种风格是因为 jquery-ui removeclass()虽然它不在文档中,但它似乎有更多参数(参见soruce),您可以使用这些参数来使用动画完成后将运行的回调:

$(document).ready(function() {
    $('p').click(function () {
        $(this).removeClass('selected', 1000, function() {
            $(this).removeAttr('style').removeAttr("class");
        });
    });
});

(我不确定你为什么要首先这样做)。

一个演示: http: //jsbin.com/opucon/2/(结果演示)

于 2012-09-12T13:19:13.867 回答