2010-08-31 64 views
4

基本上我试图让jQuery替换一次点击的窗体和状态div的按钮。无法让jQuery的.replaceWith()工作?

我是jQuery的新手,几乎没有高级程序员,所以我相信解决方案会相对简单。另一方面,我在这个问题结束了这个问题,任何帮助将大大赞赏。谢谢。

编辑:找到解决方案。有趣的是,当我把它放在一个单独的.js文件中并引用它,而不是,当我在php页面中的标签内使用它时,它也是有效的。再次感谢所有回复的人!


$(document).ready(function() { 
    $("#repbutton").click(function() { 
    $("#repbutton").replaceWith("<form id=\"reputation_form\" method=\"post\"> 
    Give positive reputation to <?=$reply_user['username']?> for their reply? 
    Comment: <input type=\"text\" name=\"comment\" id=\"comment\" /> 
      <input type=\"hidden\" id=\"uid\" value=\"<?=$reply_user['id']?>\"> 
      <input type=\"hidden\" id=\"rid\" value=\"<?=$replies_row['id']?>\"> 
      <input type=\"hidden\" id=\"urid\" value=\"<?=$user_row['id']?>\"> 
      <input type=\"submit\" value=\"Give Reputation\" /> 
</form> 
<div id=\"status\"> 
     <p></p> 
    </div>"); 

    }); 
    }); 

回答

3

换行符在字符串文字中无效,除非您用\转义它们。简单地说,无论是压缩串到一条线或添加\到每一行的末尾:

$(document).ready(function() { 
    $("#repbutton").click(function() { 
    $("#repbutton").replaceWith("<form id=\"reputation_form\" method=\"post\">\ 
    Give positive reputation to <?=$reply_user['username']?> for their reply?\ 
    Comment: <input type=\"text\" name=\"comment\" id=\"comment\" /> \ 
      <input type=\"hidden\" id=\"uid\" value=\"<?=$reply_user['id']?>\">\ 
      <input type=\"hidden\" id=\"rid\" value=\"<?=$replies_row['id']?>\">\ 
      <input type=\"hidden\" id=\"urid\" value=\"<?=$user_row['id']?>\">\ 
      <input type=\"submit\" value=\"Give Reputation\" />\ 
</form>\ 
<div id=\"status\">\ 
     <p></p>\ 
    </div>"); 

    }); 
});​ 

工作的例子 - http://jsfiddle.net/rd4w9/

+1

非常感谢 - 这似乎解决了我遇到的问题。我最终选择了“\”解决方案,因为如果我必须回来,那么编辑起来会更好。 – 2010-08-31 15:26:58

0

尝试使用append()prepend()html()功能用于操纵DOM。这样做可能会让你自己感到困惑并且遇到各种各样的问题。

你应该能够

  • 隐藏按钮
  • 追加的HTML表单的按钮是

,然后轻松地做下面,一旦你做了件表格

  • 再次显示按钮
  • 删除表格
1

为什么不躲上点击按钮,显示表单?

+0

同意你的意见。让我们让世界变得简单... – yogs 2010-08-31 15:37:34

0

你不能在你的字符串,这样在JavaScript return语句,你需要声明它是在每行的末尾使用\一个多行字符串,像这样:

$(document).ready(function() { 
    $("#repbutton").click(function() { 
    $("#repbutton").replaceWith("<form id=\"reputation_form\" method=\"post\"> \ 
    Give positive reputation to <?=$reply_user['username']?> for their reply? \ 
    Comment: <input type=\"text\" name=\"comment\" id=\"comment\" /> \ 
      <input type=\"hidden\" id=\"uid\" value=\"<?=$reply_user['id']?>\"> \ 
      <input type=\"hidden\" id=\"rid\" value=\"<?=$replies_row['id']?>\"> \ 
      <input type=\"hidden\" id=\"urid\" value=\"<?=$user_row['id']?>\"> \ 
      <input type=\"submit\" value=\"Give Reputation\" /> \ 
</form> \ 
<div id=\"status\"> \ 
     <p></p> \ 
    </div>"); 

    }); 
});​ 

You can give it a try here

+0

看着它,你发布了与最终修复它相同的解决方案。谢谢! – 2010-08-31 15:29:55