在事件处理中将 javascript 转换为 jquery

Convert javascript to jquery on event handling

我有以下代码:

    input.setOnkeypress("if (event.keyCode == 13) 
                {
                document.getElementById('search_report_form:search_button').onclick(); 
                return true;
                }");

这是函数:

final class GroupsSelector extends BaseRenderablePanel<GroupsSelector> {
        private GroupsSelector group(LabourInputReportCriteria.Level level) {
            HtmlSelectBooleanCheckbox box = new HtmlSelectBooleanCheckbox();
            boolean isSelected = selections.isGroupSelected(level);
            box.setSelected(isSelected);
            // box.setDisabled(isDaySelectedOnFirst(level));
            box.setId("groupBy" + level.getClass().getSimpleName());
            box.setOnclick("submit()");
            box.addValueChangeListener(u.addExpressionValueChangeListener("#{reportSearchCriteriaModel.groupBy}"));
            HtmlOutputText labelComponent = new HtmlOutputText();

            labelComponent.setValue(getGroupSelectionValue(level));
            tr().td();
            html(box);
            html("&nbsp;");
            html(labelComponent);
            endTd().endTr();
            return this;
        }

如果您想将前几行转换为 JQuery 然后试试这个

$('input').on('keypress', function(event){
    if (event.keyCode == 13) {
       $('[id="search_report_form:search_button"]').click(); //.submit();
       return true;
    }
});

首先,您 不需要 将其更改为 jQuery 如果它正常工作。添加 jQuery 到您的页面并不意味着 DOM 停止工作。如果它 工作,将您的 DOM 代码更改为等效的 jQuery 代码将不会使其 start 工作。

但是 jQuery 相当于

document.getElementById('search_report_form:search_button').onclick();

$('#search_report_form\3a search_button').click();

或更易读;

$('[id="search_report_form:search_button"]').click();

这里有点棘手的是 id 中有一个冒号 (:),所以我们不能只用 #search_report_form:search_button 来查找它,因为冒号貌似是一个伪class的开头。所以我们必须逃避它。在 CSS 选择器中,您可以通过将其替换为反斜杠后跟其等效的十六进制来转义它。 :的十六进制字符代码是3A,所以a。要在字符串文字中写一个反斜杠,你必须写 两个 (第一个转义第二个)。你需要在它之后的 space 来终止它,因此 '#search_report_form\3a search_button'.

第二种形式改为使用属性选择器,因为我们可以将 ID 放在引号中,而不必担心冒号。