【问题标题】:JQuery replace onClick in h:commandLinkJQuery 替换 h:commandLink 中的 onClick
【发布时间】:2014-05-01 16:06:50
【问题描述】:

我想要做的是用 JQuery 替换点击。

是否可以使用 JQuery 在命令中进行选择?更具体地说,您可以使用 JSF 标记吗?

感谢您的帮助!

【问题讨论】:

    标签: javascript jquery jsf xhtml


    【解决方案1】:

    您可以给按钮一个idclass 并在其上调用click() 函数。

    编辑

    $( ".class" ).click(function() {  //Or #id
        //Do work
    });
    

    这样任何带有classid 的元素都会调用该函数,它仍然像onClick 事件一样工作

    【讨论】:

    • 是的,这很容易做到,但我已经有 100 多个按钮,而且我有些人会开发更多按钮,他们根本不会添加正确的 ID 或 ID/类。所以我希望有一种方法可以选择 h:commandLink onClick。
    • 通过查看源代码进行实验,以了解 jsf 标记在 html 中的呈现方式。也许这会给你带来领先。
    • 如果我在这些按钮上有一个特定的类,我将如何使用它?因为我需要能够先在 onClick 中获取信息。这样我就可以将我的函数包裹在文本周围。
    • 是的,但是否可以获得已经存在的 onClick?我的意思是。 button onclick='someFn()' 然后当你的函数运行时,我希望能够检查某些东西是真还是假。如果为真,则在该按钮中运行 onClick。希望这是有道理的。谢谢:) 编辑---让我举个例子。 $(".class").click(function(){ if(someFunctionDontWorryAbout)then do onClick 或者在这种情况下 do嗨();{});
    • 你弄丢了我,对不起! :(
    【解决方案2】:

    想通了。这是答案。

    $( ".class" ).attr('onclick', 'whatever I want it to be');
    

    所以你可以这样做。

    <h:commandLink class='btn' onClick="hi" value="Button"/>
    var text = $('.btn').attr('onclick');
    
    $('.btn').attr('onclick', "function("+text+")");
    

    再进一步,对屏幕上的每个按钮都执行此操作。

    $('.btn').each(function () {
          var text = $(this).attr('onclick');
    
          $(this).attr('onclick', "function("+text+")");
    });
    

    【讨论】:

      【解决方案3】:

      要在命名空间属性上进行选择,您可以使用过滤器。这是使用您的代码的演示:

      http://jsfiddle.net/fBv4q/

      $('button').filter(function() { return typeof $(this).attr('h:commandlink') != 'undefined'; }).attr('onclick','alert(111)').html('Modified onClick');
      

      “未定义”检查很重要,因为您的属性没有值,但它仍然存在。

      不要将函数调用作为字符串提供,而是使用 jQuery 的“on”方法来附加事件

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-18
        • 2012-12-31
        • 2011-05-25
        相关资源
        最近更新 更多