0

注意:我正在使用的 jQuety 版本不支持“.on”。另外,我希望 LI 是可点击的。

注意:我做了一些额外的测试,甚至在页面上捕获了所有 Li,在有问题的 UL 内,没有一个 LI 将允许委托或现场工作。我不明白。

基本上我有很多列表项,并且没有真正的方法来获取这些 LI 元素,因为没有分配唯一的 id。我可以尝试匹配我尝试过的“部分 id”。

奇怪的是,我在不使用“.live”或“.delegate”时取得了成功。例如,如果我只使用“.bind”......我可以理解它们。

什么是奇数:在一些“.live”尝试中,我可以获得所有元素。但是,点击它们什么也没做。所以,我看到他们在篮子里(当我安慰他们时),但点击他们什么也没做。

我有一个这样的结构 - UL > LI 被许多 div 包围。(只是为了让您了解数据结构非常密集)。

 <li id="item_111190897">
   <span class="shoeColor" style="display:none">Blue Converse</span>
   <span class="shoeColor">
      <a class="shoepopup" data-popup-ref="#shoe_item_111190897" href="javascript:;">
        <img class="available" src="/media/available.gif" alt="">
      </a>
      <span class="">
        <img alt="" src="shoeicon.png">
      </span>
    Blue Converse Available Now!
  </span>

基本上,有一堆这样的 LI - 并且没有可辨别的东西可以挂钩,我正在尝试以下方法:ALL DO NOT WORK!!!

 $(document).delegate("li:has(.available)", "click", function(){
     // do something
 })

 $(document).delegate("li[id^='item_']", "click", function(){
     // do something
 })

 $(document).delegate(".available.closest('li')", "click", function(){
     // do something
 })


 $('li:has(.available)').live("click", function(){
     // do something
 })

对“.live”的排列进行了更多尝试......

但是--->“.bind”有效。这行得通。

 $('li:has(.available)').bind("click", function(){
     // do something
 })

有什么建议吗?

4

1 回答 1

1

试试这个:

$(document).on("li:has(.available)", "click", function(){
     // do something
 });

编辑:根据您编辑的问题,只需替换ondelegate

$(document).delegate("li:has(.available)", "click", function(){
     // do something
 });

这是一个有效的jsFiddle示例。

您忘记了.之前的available班级名称。

注意:如果您使用的jQuery版本大于1.7,则应使用on.

于 2013-09-04T05:50:32.053 回答