0

请帮我解决这个问题...

<li id="4331">Region
      <ul>
         <li id="4332">Asia</li>
         <li id="6621">Europe</li>
      </ul>
</li>

这是我的查询,如果我单击区域
它是 ul 的父级,
仅显示亚洲和欧洲并在单击时隐藏区域(父级)

i am using the .hide() method

这是我到目前为止所做的:

$(document).ready(function() {
    $("li").live("click", function(event) {
        $("li").hide(); 
        event.cancelBubble = true;
        loadChild($(this).attr("id"), event);
        return false;
    })
});

我目前的输出是:

<li id="4331" style="display: none;">
Region
   <ul>
      <li id="4332">Asia</li>
      <li id="6621">Europe</li>
   </ul>
</li>

它隐藏了一切...

但我只想隐藏父区域
我希望能够单击它隐藏区域并仅显示亚洲和欧洲。
请帮我解决这个问题

4

4 回答 4

3

$("li")li页面所有元素的集合,而不仅仅是您单击的元素。

代替

$("li").hide();

$(this).parent().closest("li").hide();
于 2013-01-31T13:28:46.730 回答
3

我认为您想隐藏文本Region,因此您可以将其粘贴在<span>标签中并将其隐藏。

<li id="4331"><span id="region_text">Region</span>
  <ul>
    <li id="4332">Asia</li>
    <li id="6621">Europe</li>
  </ul>
</li>

然后你可以使用

$("#region_text").hide();

请注意,我不了解 jQuery,但我对 HTML 和 DOM 了解一些 :)

于 2013-01-31T13:30:13.443 回答
2

您需要更改 DOM,文本“Region”不是 ul 的父级,而是兄弟级

<li id="4331">
      <span class="region">Region</span>
      <ul>
         <li id="4332">Asia</li>
         <li id="6621">Europe</li>
      </ul>
</li>

jquery(不推荐使用live,使用'on')

$(document).ready(function() {
    $("li").on("click", function(event) {
        $(this).find('.region').hide(); 
        loadChild($(this).attr("id"), event);
        return false;
    })
});
于 2013-01-31T13:33:15.427 回答
0

我发现这个答案非常有用:

$('#4331').css('position','relative').css('left','-9999px');

$('#4331>ul').css('position','relative').css('left','9999px')
于 2014-07-24T18:13:42.083 回答