0

注: 私が使用している jQuety のバージョンは、「.on」をサポートしていません。また、LI をクリックできるようにしたいです。

注: 追加のテストを行い、問題の UL 内でページ上のすべての Li をキャプチャすることさえしましたが、どの LI もデリゲートまたはライブが機能することを許可しません。わかりません。

基本的に、私はたくさんのリスト アイテムを持っていますが、一意の ID が割り当てられていないため、これらの LI 要素を取得する実際の方法はありません。私が試した「部分ID」で一致させることができました。

奇妙なことに、「.live」または「.delegate」を使用していないときに成功しています。たとえば、「.bind」だけを使用すると、それらを取得できます。

ODD とは: 一部の ".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 に答える