【问题标题】:Customized Drop Down List自定义下拉列表
【发布时间】:2014-12-21 18:06:28
【问题描述】:

所以我正在设计一个自定义的 DropDownList 我需要将它作为一个普通的下拉列表给用户 这是 HTML

<div class="select" id="long">
  <img src="img/pin.jpg" class="select_img" />
  <div class="select_text">
    Newsletter
  </div>
  <div class="select_arrow">
    <>
  </div>
  <ul>
    <li>this</li>
    <li>that</li>
    <li>duck</li>
    <li>deck</li>
  </ul>
</div>
<div class="select" id="short">
  <img src="img/clk.jpg" class="select_img" />
  <div class="select_text">
    Contact
    </div>
    <div class="select_arrow">
      <>
    </div>
    <ul>
      <li>this</li>
      <li>that</li>
      <li>duck</li>
      <li>deck</li>
    </ul>
  </div>
</div>

如您所见,我在这里有两个 DropDownList 项目,一个很长,另一个很短 这是CSS

/*ID's*/

img#logo {display: inline-block;float: left; height: 55px; width: 155px;}
div#long {margin-left: 330px;}
div#long .select_text { width: 85px;}
div#long ul {width: 147px; display: none;}
div#short {margin-left: 16px;}
div#short .select_text { width: 57px;}
div#short ul {width: 119px; display: none;}

/* Classes */

.select{
    position: relative;
    height: 31px;
    display: inline-block;
    float: left;
    margin-top: 10px;
    font-family: nexa;
    color: #959595;
    font-size: 10px;

}
.select_img{
    display: inline-block;
    float: left;
    width: 31px;
    height: 31px;
    background-color: #fff;
    cursor: pointer;
}
.select_text{
    display: inline-block;
    float: left;
    height: 31px;
    background-color: #fff;
    cursor: pointer;
    text-indent: 3px;
    line-height: 32px;
}
.select_arrow{
    display: inline-block;
    -webkit-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    transform: rotate(90deg);
    background-color: #ebebeb;
    color: #959595;
    width: 31px;
    height: 30px;
    border-bottom: 1px #d8d8d8 solid;
    font-size: 11px;
    line-height: 32px;
    text-indent: 6px;
    font-family: Quicksand;
    font-weight: bold;
    cursor: pointer;
    text-indent: 10px;
}

.select ul li{
    text-indent: 34px;
    width: 100%;
    background-color: #fff;
    cursor: pointer;

}
.select ul li:hover{
    background-color: #f26c4f;
}

现在,我的问题是:

当我单击任何div.select 子项时,我想显示我单击的同一个div 的ul,我尝试了$(this).children('ul).slideDown('normal');,但没有成功:(

我需要这样的方式,我想用$(this)选择器

我不想使用这样的方式:

$('#select_img, #select_text, select_arrow').click(function(){
    $('#long ul').slideDown('normal');
}); 

我希望它是通用的:当我点击任何 div 元素时,它会显示 ul

【问题讨论】:

  • 嗯,确实,您的控制台中有错误消息吗?
  • 如果您不想定位子元素,请详细说明。你想要什么。显示您尝试过但不起作用的代码
  • 我想运行任何 div 元素的代码......让我们假设将来我更改了 div 中的元素我需要代码以我想要的任何方式运行子元素,但父 div 既不是类名也不是 id
  • 这种解释毫无意义
  • 那么,您希望这个&lt;ul&gt; 元素看起来像&lt;select&gt; 元素吗?并让它显示,通过点击它的父/祖先&lt;div&gt;?

标签: javascript jquery html css jquery-selectors


【解决方案1】:

为什么要绑定IDs 上的事件?它应该在课堂上。

代码:

$('.select_img, .select_text, .select_arrow').click(function(){
    $(this).siblings('ul').slideDown();
});

小提琴:http://jsfiddle.net/k7699nar/

【讨论】:

  • 我认为这是一个错字,她/他只是不想使用那个选项:-)
  • 谢谢,但我不希望这样我需要使用类内部元素
  • @bvl 是的,我(他)不想使用这个选项
  • -1 第一次遍历不起作用,因此您将其替换为另一个不起作用的遍历。尝试测试您的解决方案,而不是猜测
  • @charlietfl 你可以检查小提琴。 jsfiddle.net/k7699nar 并提供您的建议,如果有的话。
【解决方案2】:

$(this).find('ul').slideDown('slow');

假设您的$(this) 被正确抓取,我也不认为“正常”是slideDown() 的选项

【讨论】:

  • 好的,但是 .click 部分对父 div 内的元素有什么好的选择?
  • 当用户在选择器中选择内部元素时,答案似乎不完整,在这种情况下如何使用$(this).find('ul')
猜你喜欢
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-22
  • 2015-12-09
相关资源
最近更新 更多