jQuery 绑定/更改为下拉表单

jQuery bind/change to Drop Down Form

本文关键字:表单 绑定 jQuery      更新时间:2023-09-26

我有一篇更长的文章描述了我想要做的事情,但我认为没有必要,所以我把它变得简单。 我正在努力让Zurb基金会使用Datatables。 除了下拉菜单之外,这很容易。 作为 js 新手,我很难让它工作。 下面是基础下拉列表的一般语法。

<label for="customDropdown">Dropdown Label</label>
<select style="display:none;" id="customDropdown">
  <option select="selected">This is a dropdown</option>
  <option>This is another option</option>
  <option>Look, a third option</option>
</select>
<div class="custom dropdown">
  <a href="#" class="current">This is a dropdown</a>
  <a href="#" class="selector"></a>
  <ul>
    <li class="selected">This is a dropdown</li>
    <li>This is another option</li>
    <li>Look, a third option</li>
  </ul>
</div>

我遇到问题的地方是我的事件侦听器在单击 UL 时触发更新表长度,因此使用先前选择的长度更新表长度。 因为基金会JS是更新UL LI的那个,所以每次检测更改的尝试都不起作用,因为我的代码在基金会将类应用于LI之前触发。

因此,要更新表格,似乎很明显我必须检测选项值的变化

$('div#example_length form select').val()

或在 LI 中

$('div.custom ul li.selected').text()

我尝试将 .change() 函数链接到上面以检测值的变化,但它给了我一个错误。 我在这里很迷茫。 我花了很多时间试图解决这个问题。

编辑:为了清楚起见,我要做的是在选择下拉列表时获取正确的值。 我现在得到一个值,但它是之前选择的值,而不是刚刚选择的值。 由于Foundation的工作方式,我很难用我的绿带jQuery技能做到这一点。

谢谢。

我觉得有点愚蠢,因为没有更快地弄清楚这一点;这就是学习过程。

$('div.custom ul', nLength).on('click', 'li', function(event) {
foo = $(this).text();
console.log(foo);
});

我在这里发现,由于某种原因,"绑定"只检测第一个事件,而"on"检测每个事件操作。