0

次のコードを使用しています。

$("#jplayer_playlist_item_" + i).data("index", i).click(function () {
  var index = $(this).data("index");

  if (playItem != index) {
    playListChange(index);
  } else {
    $("#jquery_jplayer").jPlayer("play");
  }

  $(this).blur();

  return false;
});

"#jplayer_playlist_item_" + i"の親をliクリックすると、アイテム自体をクリックした場合と同じように、この機能が続行されるように取得しようとしています。

.parent直前に入れようとしまし.clickたが、うまくいきませんでした。

ありがとう

4

4 に答える 4

0

アイテムと親の両方をクリックしてイベントハンドラーに接続する場合は、次のようにします。

var item = $("#jplayer_playlist_item_" + i);
item.add(item.parent()).data("index", i).click(function() {
    ...
}

これにより、通常のアイテムがjQueryオブジェクトに取り込まれ、親オブジェクトがselectに追加されてから、data( "index"、i)とクリックハンドラーの両方がアイテムとクリックハンドラーの両方に適用されます。

ここに含まれる実際のHTMLを確認できれば、委任されたイベント処理とイベントバブリングを使用して、いずれかの要素のクリックを1か所で処理することも可能です。

于 2012-08-31T06:32:22.680 に答える
0

.data( "index"、i)を削除してみましたか?

以下が機能するはずです。

$("#jplayer_playlist_item_" + i).parent().click(function()
    {
        var index = $(this).data("index");
        if (playItem != index)
        {
            playListChange(index);
        } else
        {
            $("#jquery_jplayer").jPlayer("play");
        }
        $(this).blur();
        return false;
    });

それ以外の場合は、次のように選択を開始します。

 $("#idofparentelement, #idofparentelement > #jplayer_playlist_item_" + i).data("index", i).click(function()
    {
        var index = $(this).data("index");
        if (playItem != index)
        {
            playListChange(index);
        } else
        {
            $("#jquery_jplayer").jPlayer("play");
        }
        $(this).blur();
        return false;
    });
于 2012-08-31T06:24:10.423 に答える
0

このように試しましたか。あなたはそれがそうであることを知っていて<li>、その親がそうであるべきであると仮定しているので<ul>

してみてください

$("#jplayer_playlist_item_" + i).data("index", i).parents('ul').click(function () {
.....
}
于 2012-08-31T09:05:28.763 に答える
0

あなたのコードに加えて:

$("#jplayer_playlist_item_" + i).data("index", i).click(function() {
    var index = $(this).data("index");
    if (playItem != index) {
        playListChange(index);
    } else {
        $("#jquery_jplayer").jPlayer("play");
    }
    $(this).blur();
    return false;
});​

これを行うだけです:

var $element = $("#jplayer_playlist_item_" + i);
$element.parent().click(function() {
    $element.click();
    return false;
});
于 2012-08-31T06:45:11.670 に答える