quotes javascript(jquery)-html-php


quotes javascript(jquery)-html-php

我在这样的问题堆栈:

例子
<td>
    <span style="cursor:pointer;" onclick="$(this).parent().html('<input type=''text'' value=''asdasd'' onkeydown=''javascript:if(char_click(event)==13){send_ajax_settings($(this),'title' ,'3')}''>');">
        <?=$result['settings_title']?>
    </span>
</td>

看起来很好,但在浏览器中我得到"Uncaught SyntaxError: Unexpected identifier"在这一行(chrome列表):

<span style="cursor:pointer;" onclick="$(this).parent().html('input type=''text'' value=''asdasd'' onkeydown=''javascript:if(char_click(event)==13){send_ajax_settings($(this),'title' ,'3')}''>');">asdasd</span>
如果以前有人遇到过这样的麻烦,请帮帮我。我哪里错了?也许通过PHP echo会更好(我猜不是:))?

您没有转义'this'和'3'中的撇号。
正确的标记是:

<span style="cursor:pointer;" onclick="$(this).parent().html('input type=''text'' value=''asdasd'' onkeydown=''javascript:if(char_click(event)==13){send_ajax_settings($(this),''title'' ,''3'')}''>');">asdasd</span>

然而,这种绑定事件是一种非常糟糕的实践,并且会导致您刚刚遇到的那种错误。你应该这样做:

 <span style="cursor:pointer;" class="spanClass" data-param1="title" data-param2="3">asdasd</span>
 <span style="cursor:pointer;" class="spanClass" data-param1="title2" data-param2="5">asdasd</span>
 ... more spans generated dynamically

和这个:

   $(document).ready(function(){
     $(".spanClass").click(function(){
          var param1 = $(this).attr("data-param1");
          var param2 = $(this).attr("data-param2");
          $('<input type="text" value="asdasd" />').keydown(function(event){
            if(char_click(event)==13) {
               send_ajax_settings($(this), param1 , param2));
            }
          }).appendTo($(this).parent());
      });
    });

所以,你可以把javascript和html分开,并且可以为服务器动态生成的任何数量的元素工作。

希望这对你有帮助。欢呼声

我认为你仍然缺少一些转义在send_ajax函数,试试这个:

<span style="cursor:pointer;" onclick="$(this).parent().html('input type=''text'' value=''asdasd'' onkeydown=''javascript:if(char_click(event)==13){send_ajax_settings($(this),''title'' ,''3'')}''>');">asdasd</span>

或者,为了使事情更易于管理,您可以使onclick调用一个执行给定代码的函数。这意味着您不必担心转义这么多,并且对您来说应该容易得多。