0

メニューの外側をクリックして Javascript メニューを閉じたいです。このメニューを使用しています。私は専門家ではありません。それを行うためにコードを変更する方法を教えてください:

$("#theme_select").click( function () {
  if (theme_list_open == true) {
    $(".center ul li ul").fadeOut();
    theme_list_open = false;
  } else {
    $(".center ul li ul").show();
    theme_list_open = true;
  }
  return false;
});
$("#theme_list ul li a").click(function () {
  var theme_data = $(this).attr("rel").split(",");
  $("li.purchase a").attr("href", theme_data[1]);
  $("li.remove_frame a").attr("href", theme_data[0]);
  $("#iframe").attr("src", theme_data[0]);
  $("#theme_list a#theme_select").text($(this).text());
  $(".center ul li ul").hide();
  theme_list_open = false;
  return false;
});
4

2 に答える 2

1

iframe 領域がクリックされたときにそのメニューを閉じたい場合は、iframe でそれを行う必要があります。これを iframe のドキュメント準備完了関数に入れてみてください:

$("html").click( function () {
    $(".center ul li ul", window.parent.document).fadeOut();
    window.parent.theme_list_open = false;
});
于 2012-12-05T05:09:33.913 に答える
0

$("#theme_select").click( function () {メニューを開いたり閉じたりするために使用しているようです。メニュー項目のクリックを処理するために使用$("#theme_list ul li a").click(function () {します。これにより、メニューが閉じられます。

実際、あなたの問題には簡単な解決策があります。$("#theme_select").clickメニューを開くためだけに使用し、リンクを処理し、メニューを閉じるために$("#theme_list ul li a")導入します。$(window).click

function checkAndCloseMenu(evt) {
  var dropmaker = $('#theme_select')[0];
  for (var node = evt.target; node != document.body; node = node.parentNode)
    if (node == dropmaker) return false;  // check if click in the dropmaker
  $('.center ul li ul').fadeOut();
  $(window).unbind('click', checkAndCloseMenu);
}
$("#theme_select").click(function() {
  $(".center ul li ul").show();
  $(window).click(checkAndCloseMenu);
});
$("#theme_list ul li a").click(function() {
  var theme_data = $(this).attr("rel").split(",");
  $("li.purchase a").attr("href", theme_data[1]);
  $("li.remove_frame a").attr("href", theme_data[0]);
  $("#iframe").attr("src", theme_data[0]);
  $("#theme_list a#theme_select").text($(this).text());
  return false;
});

PS: メニューとメニュー項目にいくつかのクラス名を付ける必要があるかもしれません。セレクターは読みにくいです。

于 2012-12-05T04:39:03.843 に答える