Javascript 使这个JS代码不引人注目。为未知id编写事件侦听器

Javascript 使这个JS代码不引人注目。为未知id编写事件侦听器,javascript,jquery,unobtrusive-javascript,Javascript,Jquery,Unobtrusive Javascript,我一直在构建这个UI的功能。这是我想为之编写侦听器的一对选项卡,以使我的js不引人注目。它阻碍了我前进。现在我正在重构,是时候修复它了。我想编写一个事件侦听器,它获取单击的选项卡的id,并将其分配给一个变量。这就是我所拥有的: <ul id="gal"> <li class="glyphicons camera active" onclick="pullActive(this.id);" id="viewAll"><a href="#" ><i&

我一直在构建这个UI的功能。这是我想为之编写侦听器的一对选项卡,以使我的js不引人注目。它阻碍了我前进。现在我正在重构,是时候修复它了。我想编写一个事件侦听器,它获取单击的选项卡的id,并将其分配给一个变量。这就是我所拥有的:

<ul id="gal">

   <li class="glyphicons camera active" onclick="pullActive(this.id);" id="viewAll"><a href="#" ><i></i> View all photos <strong>(43)    </strong></a>
   </li>
   <li class="glyphicons circle_plus tab-stacked" onclick="pullActive(this.id);" id="addPhotos"><a href="#"><i></i> <span>Add Photos</span></a>
   </li>
</ul>

function pullActive(id){

 // gets the class for that id
  var getClassy = document.getElementById(id).className;
  findClass(getClassy, id);
  loadNew();

}  
函数pullActive(id){ //获取该id的类 var getClassy=document.getElementById(id).className; findClass(getClassy,id); loadNew(); }
如果没有jQuery,您必须执行以下操作

var item = document.querySelector("#gal");
item.attachEventHandler("click", function(ev) {
   if (ev.target.tagName === "LI") {
      var id = ev.target.id;
      // ...
   }
});
在jquery中(当您这样标记您的问题时),它看起来是这样的

$(function() {
   $("#gal").delegate("li", "click", function() {
      var id = this.id;
      // ...
   });
});

如果没有jQuery,您将不得不这样做

var item = document.querySelector("#gal");
item.attachEventHandler("click", function(ev) {
   if (ev.target.tagName === "LI") {
      var id = ev.target.id;
      // ...
   }
});
在jquery中(当您这样标记您的问题时),它看起来是这样的

$(function() {
   $("#gal").delegate("li", "click", function() {
      var id = this.id;
      // ...
   });
});

使用jQuery,这将是

$( document ).ready(function() {
  $( '#gal' ).on( 'click', 'li', function() {
    var id = this.id
  });
});

这种方法的好处是您只有一个事件处理程序(在ul上定义),而不是每个li都有一个事件处理程序。希望这有帮助。

使用jQuery,这将是

$( document ).ready(function() {
  $( '#gal' ).on( 'click', 'li', function() {
    var id = this.id
  });
});
这种方法的好处是您只有一个事件处理程序(在ul上定义),而不是每个li都有一个事件处理程序。希望这有帮助。

jQuery解决方案: 香草溶液: 下面是一个包含这两个示例的示例。

jQuery解决方案: 香草溶液:
下面是一个包含这两个示例的示例。

谢谢大家。这真是一个愚蠢的问题,但今天我的大脑被震碎了。没问题,很高兴它有帮助!谢谢各位。这真是一个愚蠢的问题,但今天我的大脑被震碎了。没问题,很高兴它有帮助!