【问题标题】:JSF component selector for jQuery [duplicate]jQuery的JSF组件选择器[重复]
【发布时间】:2016-06-01 18:25:24
【问题描述】:

我在 JSF 应用程序上使用 jQuery。我有一个单选按钮,单击它并在成功时会呈现一些 Ajax 渲染,我正在尝试将其删除(为简单起见)

我的 ajax 回调如下所示:

function ajaxOnSuccess(data) {
    var getId = data.source.id;
    $(getId).remove(); // This won't work 
}

console.log($(getId)) 正在返回 [prevObject: n.fn.init[1], context: document, selector: "coverage:j_idt483:0:j_idt487:0:printableNts:select-one-radio:0"] - 所以我认为它无法找到元素?

如何选择单选按钮?

【问题讨论】:

    标签: javascript jquery jsf


    【解决方案1】:

    首先$(getId).remove();是一个错误的jquery选择,应该是:

    $("#"+getId).remove();
    

    但是您确定该元素的 id 确实存在吗?我问你这个是因为 JSF 为嵌套组件 ID 添加了前缀。打开您生成的 Page 的 sourceCode 并查找该 id,并检查其是否与您在 JQuery-Selector 中使用的完全相同。

    另一个选项可能正在使用类选择器,例如:

    $(".classNameOfThatElement").remove();
    

    YourElementParent.find(".classNameOfThatElement).remove();
    

    更新:

    你在评论中说,你得到了

    “未捕获的错误:语法错误,无法识别的表达式:不支持 伪:j_idt483"

    生成的组件 id 中的冒号 (:) 在 JQuery byId 选择器中导致此问题。

    现在试试这个:

    $(document.getElementById(getId)).remove();
    

    这应该可以。我测试了它:)

    【讨论】:

    • 试过$("#"+getId).remove();,但我得到一个错误:Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: j_idt483。单选按钮位于ui:repeat 中,因此我需要触发 ajax 的元素的 ID。另外,是的,我在控制台日志中获得的 id 与 DOM 中元素的 id 匹配
    • @ultimatecoder,将属性 prependId="false" 添加到该表单中,这样您就可以访问您的 id AS is without prefixes,再试一试,alert(getId) 并告诉我得到什么!
    • 做到了,但没有运气。当我做alert(getId)时,我得到j_idt483:0:j_idt487:0:printableNts:select-one-radio:0
    • @ultimatecoder,我更新了我的答案,再试一次!
    • 是的,它有效!!!谢谢你:)
    猜你喜欢
    • 2017-07-23
    • 1970-01-01
    • 2021-12-08
    • 2018-03-14
    • 1970-01-01
    • 2013-06-17
    • 2017-01-11
    相关资源
    最近更新 更多