Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mozilla中未调用Div onclick事件_Javascript_Jquery - Fatal编程技术网

Javascript Mozilla中未调用Div onclick事件

Javascript Mozilla中未调用Div onclick事件,javascript,jquery,Javascript,Jquery,我的代码中有: <div class="someClass"> <div id="22" class="otherClass" onclick="goToEdit();">Title</div> <div class="parent">Other title</div> </div> 在Chrome中,一切正常,但在Mozilla中,它不会对点击事件做出反应。为什么?HTML名称和id标记必须以字母开头。您

我的代码中有:

<div class="someClass">
    <div id="22" class="otherClass" onclick="goToEdit();">Title</div>
    <div class="parent">Other title</div>
</div>

在Chrome中,一切正常,但在Mozilla中,它不会对点击事件做出反应。为什么?

HTML名称和id标记必须以字母开头。您有
id=“22”
。也许这会导致浏览器之间的不一致。请参阅:

按定义div用于将页面划分为不同的部分。
改为使用锚定或带有类型按钮标记的输入

尝试将对元素的引用传递给函数

 ... onclick="goToEdit(this);">

编辑:

我得到一个错误,事件未定义

Doh我们都应该意识到

问题是,
event
在大多数浏览器上都不是全局的,尽管它在IE上是全局的,Chrome通过使它成为全局的以及做它应该做的事情(将它传递到事件处理函数中)为IE设计的站点投下了骨头

到目前为止,最好不要使用
onclick=“code”
(见下文),但您也可以这样做:

<div id="22" class="otherClass" onclick="goToEdit(event);">Title</div>
JavaScript:

$("#d22").click(goToEdit);
function goToEdit(event) {
    tree.selectItem(event.target.id.substring(1));
    btnMyButton_onclick();
}
注:

  • 在传递之前,我将
    d
    id
    值的开头剥离。我想那是因为某种原因
  • 没有理由执行
    $(event.target.attr('id')
    ,只需直接使用
    event.target.id
  • 如果
    div
    可能包含其他元素(
    span
    s、
    em
    s、
    p
    s等),请注意
    event.target
    可能不是
    div
    ,它可能是
    div
    的后代元素
    这个
    将始终是
    div
    ,但是(jQuery会注意到这一点),因此:

    • 我认为,您可以从html中删除“onclick”

      <div class="someClass">
          <div id="22" class="otherClass">Title</div>
          <div class="parent">Other title</div>
      </div>
      
      但是如果您的div id=“22”将被动态添加,那么您应该使用如下内容

      $('#22').on('click', function (e) {
          your code
      });
      
      $('parent').on('click', '#22', function (e) {
          your code
      });
      

      where'parent'-静态元素在单击之前已经存在于文档中,我也面临同样的问题,但这段代码帮助了我

      我在Mozilla Firefox和Chrome上进行测试,这两种浏览器都可以使用

      <input type="button" onclick="return goBack();" class="btn btn-warning cancel" value=" Cancel" style="color:white" />
      
      <script>
      function goBack() {
          window.history.back();
      }
      </script>
      
      
      函数goBack(){
      window.history.back();
      }
      
      您如何知道该事件未在Firefox(Mozilla)中触发?尝试在函数goToEdit()中放入一个alert(),什么是
      ?它是否引用了
      window.tree
      ,后者又引用了ID为
      tree
      的元素?如果是,Firefox不会在全局范围内为具有ID的元素创建符号。您必须使用
      document.getElementById
      @Sparky:或者更好,使用适当的调试器(Firefox现在内置了一个调试器,或者当然有Firebug)和一个断点。@FelixKling不,它是dhtmlx树。我得到的错误是没有定义事件。@T.J.Crowder我得到的错误是没有定义事件。是和否:-)从HTML5开始,这个ID就是,这里的规范只是记录现有的行为(浏览器对
      document.getElementById(“22”)
      )。CSS仍然需要它……我很高兴看到我尝试过的所有浏览器(Chrome、Firefox、Opera、IE9)在标准模式下正确地在
      document.querySelector(“22”)
      上抛出了一个错误;Chrome和Firefox在quirks模式下也会抛出一个错误,而Opera容忍无效的CSS
      id
      ,IE9报告说它根本没有
      querySelector
      。因此,它将取决于
      tree.selectItem
      的作用以及它是否在DOM选择中使用该
      id
      值。测试:|谢谢Rick,它帮助了我!
      <div class="someClass">
          <div id="22" class="otherClass">Title</div>
          <div class="parent">Other title</div>
      </div>
      
      $('#22').on('click', function (e) {
          your code
      });
      
      $('parent').on('click', '#22', function (e) {
          your code
      });
      
      <input type="button" onclick="return goBack();" class="btn btn-warning cancel" value=" Cancel" style="color:white" />
      
      <script>
      function goBack() {
          window.history.back();
      }
      </script>