【问题标题】:jquery toggleClass() inside on() not workingon()内的jquery toggleClass()不起作用
【发布时间】:2014-12-10 10:10:06
【问题描述】:

这是我的 JQuery 代码,它(类切换)不起作用..
我假设它是 this 的上下文,但 console.log() 显示它是正确的元素。

// .dynamic-content AND ul are static. the event is delegated! 
$(".dynamic-content ul").on(
  'click',
  ".point_element",
  function(eve){
    $(this).css("border","2px solid green"); // works
    $(this).toggleClass("selected");         // not working
    $(this).prop("class","selected");        // works
    $("input", this).trigger('click');       // works
  }
);

HTML:

<div class="dynamic-content">
<ul>
<li id="point_element_2877" class="element point_element">
  <fieldset><label><input value="po7" type="checkbox"></label></fieldset>
  <div class="inlined">
    <table>
      <tr><td>some text</td></tr>
    </table>
  </div>
</li>
...
...

【问题讨论】:

  • .dynamic-content ul 元素是否也是动态创建的
  • 不,动态内容只有 ul 的。事件被触发并且第二行(输入的click 事件正在工作)
  • @A.Wolff 类未切换
  • 我猜是因为输入子气泡上的点击事件,所以测试它删除触发器。如果您的目标是选中/取消选中复选框,请使用 prop() 进行设置。如果您希望在复选框上触发任何绑定处理程序,请改用 triggerHandler ()
  • @A.Wolff 正确!我的错。它可以工作,但会立即启动。谢谢。这就是答案

标签: jquery toggleclass jquery-on


【解决方案1】:

如果您的内容是动态生成的,那么您必须将事件委托给最近的静态父级或document 尝试以下一个:

$("staticParentID/Class").on('click', ".point_element", function (eve) { // static parent

或者这个:

$(document).on('click', ".point_element", function (eve) { // delegated to document

语法是:

$(delegatedParent).on(event, selector, callbackFn);

【讨论】:

    【解决方案2】:

    正如@A.Wolff 在他的评论中提到的,答案是代码工作得很好。
    问题是触发的事件正在取消选中元素..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      相关资源
      最近更新 更多