【问题标题】:Unable to select element paragraph using jquery无法使用 jquery 选择元素段落
【发布时间】:2014-01-20 02:12:16
【问题描述】:
<html>
<head>
<script>
$(document).ready(function(){
 $("p").click(function(){
     $(this).hide();
  });

});
  function func(){
var s = "<p id=" + id +">"+"<center>"+"<h2><b>Topic :</b></h2>"+message+"</center></p><br>";
document.getElementById("stat").innerHTML+=s;

}
</script>



</head>
<body>
//call function func
<pre id="stat" > </pre>
</body>
</html>

伙计们,函数 func 应该创建一个 id 为“id”的段落,内容为标签内的一条消息,id 为“stat”.. 它工作正常 但我不能使用“Jquery”选择器来使用

上的点击功能

标签:/! 我在里面插入的原因是我需要解释器将“\ n”视为一个新行。 为什么这样,不工作?

还有其他方法吗?

【问题讨论】:

  • 你的代码中的&lt;p&gt;标签在哪里?
  • 你检查过 js 控制台错误吗?我问是因为 id 和 message 未定义
  • 有6个答案,它们都会起作用。创建一个 jsfiddle 并编辑您的问题。
  • @arun15thmay 是的,实际上我已经在函数内部定义了它只是一个粗略的草图
  • 我同意@johnnycardy。你能创建一个jsfiddle吗?可以修复

标签: javascript jquery html paragraph pre


【解决方案1】:

func中附加点击事件处理程序:

function func(){
    var s = "<p id=" + id +">"+"<center>"+"<h2><b>Topic :</b></h2>"+message+"</center></p><br>";
    document.getElementById("stat").innerHTML+=s;


    $("#" + id).click(function(){
        $(this).hide();
    });
}

或者更好:

function func(){
    var s = $("<p id=" + id +">"+"<center>"+"<h2><b>Topic :</b></h2>"+message+"</center></p><br>");
    $("#stat").append(s);

    s.click(function(){
        $(this).hide();
    });
}

【讨论】:

  • 你的意思是像

    ??

  • 你可以这样做,但是用 jQuery 附加会更干净。
  • @jonnycardy 似乎没有按照它需要的方式工作因为我在 for 循环中有函数的内容,可以用 diff id 和消息添加它 100 次,但我只得到一个段落而不是 100
  • 啊...如果有 100 个,那么我的回答无论如何也不会特别有效。我会在@arun15thmay 的答案上寻求变化。
【解决方案2】:

最快的方法是改变

var s = "<p id=" + id +">"+"<center>"+"<h2><b>Topic :</b></h2>"+message+"</center></p><br>";

var s = "<p id=" + id +" onclick=\"$(this).hide()\">"+"<center>"+"<h2><b>Topic :</b></h2>"+message+"</center></p><br>";

并删除它

$(document).ready(function(){
 $("p").click(function(){
     $(this).hide();
  });

});

【讨论】:

    【解决方案3】:

    试试这个,

    $(document).ready(function(){
     $(document).on('click','p',function(){
         $(this).hide();
      });    
    });
    

    【讨论】:

      【解决方案4】:
      $(document).on('click', 'p', function() { $(this).hide();})
      

      您编写的代码不起作用,因为在加载文档时 p 元素不存在。由于 p 元素是动态添加的,因此您必须将事件附加到文档对象

      【讨论】:

        【解决方案5】:

        这可能会有所帮助:

        $('body').on('click', 'p', function(){
           $(this).hide();
        });
        

        【讨论】:

          【解决方案6】:

          改用.on()

           $(document).on('click', 'p', function(){
               $(this).hide();
            });
          

          .on() 必须能够为动态创建的元素添加点击处理程序,例如您的&lt;p&gt; 标签是

          【讨论】:

          • 没有工作,兄弟:/ .,但谢谢你给我一个关于问题的想法:)
          • @DhayalanPro - 这会起作用,要么 HTML 没有被正确添加,要么你在某处有一些 javascript 语法错误阻止了这段代码工作。尝试在控制台中查找其他错误
          • 肯定会检查一下
          猜你喜欢
          • 1970-01-01
          • 2023-04-09
          • 1970-01-01
          • 1970-01-01
          • 2017-04-05
          • 2015-02-16
          • 2020-01-31
          • 2020-08-06
          • 1970-01-01
          相关资源
          最近更新 更多