javascript - 使用 onClick 动态构建按钮

标签 javascript jquery html

我正在 JavaScript 中动态构建一个按钮,这将包括一个 onClick 事件。 onClick 事件需要关注存储在变量中的字段。

我找不到使用字段变量本身的方法,因此决定尝试使用 JQuery 对象中的 field.selector 属性,这将包含“”。

这是当前结构的代码片段。

InvalidField.prototype.getMessageStructure = function(){
    var structure = '<div class="invalidMessage"><span>' + this._message + '</span>
        <button class="inputButton" 
            Value="Go To Field" 
            onclick=\'goToFieldFromAlert($(\'' + this._field.selector + '\'))\'
        />
    </div>';
    return structure;
};

这正在输出:

<button class="inputButton" 
    value="Go To Field" 
    onclick="goToFieldFromAlert($(" input[name="applicant.email" ]'))'="">
</button>

如您所见,报价不会正确输出,因此点击时会中断。

任何人都可以预见执行此功能或更正引用的更好方法吗?我从这个SO Answer看到DOM 不尊重引号,这就是目前导致我出现问题的原因。

亲切的问候。

最佳答案

正如我在评论中提到的,完全避免使用 onclick。 jQuery 事件处理程序更加灵活(并且支持多个事件处理程序)。

1) 将字段名(仅,而不是 jQuery 选择器)注入(inject)到 data- 属性中:

InvalidField.prototype.getMessageStructure = function(){
    var structure = '<div class="invalidMessage"><span>' + this._message + '</span>
        <button class="inputButton" 
            value="Go To Field" data-field="' + this._field.name + '"/>
    </div>';
    return structure;
};

2) 使用委托(delegate)事件处理程序以更少的开销获取对 inputButtons 的所有点击。提取字段名称并在其所属位置执行 jQuery:

  $(document).on('click', '.inputButton', function() {
       var $button = $(this);
       var field = $button.data('field');
       goToFieldFromAlert('input[name="' + field + '"]');
  });

关于javascript - 使用 onClick 动态构建按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25662217/

相关文章:

javascript - 响应式CSS div定位优先级

javascript - javascript 和 CSS 中的滚动条问题

javascript - 什么时候需要使用 Object.assign() 方法来复制对象的实例?

jquery - 如何用jQuery实现这种导航瓦片效果?

html - 什么时候关闭 </li> 不是可选的?

javascript - NodeJS如何检查子进程是否创建成功

javascript - 如何通过 jquery 在我的 rad 网格中获取链接按钮的文本?

Javascript/jQuery 填充多维数组...具有数组元素的数组

javascript - 使用 Javascript 阻止表单操作发生

html - 如何隐藏屏幕边缘的元素?