尝试从内联javascript编写函数

尝试从内联javascript编写函数,javascript,jquery,Javascript,Jquery,我从一个离开我们公司的开发人员那里得到了一些代码。他编写了一个内联函数,如下所示: <button class="xxx" id="MyID" type="button" onclick="javascript: $('#openThis').slideToggle('slow');">btnText</button> 但我似乎无法让它发挥作用。我做错了什么?如果按钮是动态添加的,请使用而不是单击 将一个或多个事件的事件处理程序函数附加到 选定的元素 事件处理程序仅绑定

我从一个离开我们公司的开发人员那里得到了一些代码。他编写了一个内联函数,如下所示:

<button class="xxx" id="MyID" type="button" onclick="javascript: $('#openThis').slideToggle('slow');">btnText</button>

但我似乎无法让它发挥作用。我做错了什么?

如果按钮是动态添加的,请使用而不是单击

将一个或多个事件的事件处理程序函数附加到 选定的元素

事件处理程序仅绑定到当前选定的元素;他们 必须在代码调用.on时存在

这种方法的作用是将事件添加到当前选定的元素(此处为文档),并将事件委托给选择器(在本例中为MyID)

委派事件的优点是,它们可以从中处理事件 以后添加到文档中的子元素


您应该删除按钮标记和javascript中的onclick=属性:

$("#MyID").click(function (e) {
  e.preventDefault();
    $("#openThis").slideToggle("slow");
});
使用“防止”默认值。
希望获得帮助

您是在DOM上创建对象之前还是之后添加侦听器

因为如果您在不等待文档准备就绪的情况下尝试绑定onclick函数,那么就没有对象可以创建侦听器

类似这样的方法可能会奏效:

$(document).on('ready', function() {
  $("#MyID").click(function () {
    $("#openThis").slideToggle("slow");
  });
});
$document.on'click',myBtn',函数{ $'foo'。滑动切换'slow'; }; 所容纳之物
单击我您想要滚动到该区域,因此从按钮中删除JavaScript

你需要这样做

$("#MyID").click(function() {
    $('html, body').animate({
        scrollTop: $("#openThis").offset().top
    }, 2000);
    $("#openThis").slideToggle("slow");
});

按钮是动态创建的吗?您的代码应该可以工作。你可能会发布一个完整的项目片段吗?取决于这里的完整情况。为什么?他为什么要这样做?结果是什么?这就像是反向冒泡?不,它不是冒泡它的授权这是一个很好的叫喊,尽管没有娱乐步骤,我们都猜我们很乐意帮忙:D
$(document).on('ready', function() {
  $("#MyID").click(function () {
    $("#openThis").slideToggle("slow");
  });
});
$("#MyID").click(function() {
    $('html, body').animate({
        scrollTop: $("#openThis").offset().top
    }, 2000);
    $("#openThis").slideToggle("slow");
});