GVKun编程网logo

javascript – 通过Ruby On Rails中的jquery的onclick函数传递对象的id

11

在本文中,我们将带你了解javascript–通过RubyOnRails中的jquery的onclick函数传递对象的id在这篇文章中,同时我们还将给您一些技巧,以帮助您实现更有效的Javascrip

在本文中,我们将带你了解javascript – 通过Ruby On Rails中的jquery的onclick函数传递对象的id在这篇文章中,同时我们还将给您一些技巧,以帮助您实现更有效的Javascript / jQuery onclick无法正常工作、javascript – JQuery onclick事件无法在第二页的JQuery数据表中识别、javascript – jQuery onclick传递post变量并重新加载页面、javascript – jquery onclick函数未定义

本文目录一览:

javascript – 通过Ruby On Rails中的jquery的onclick函数传递对象的id

javascript – 通过Ruby On Rails中的jquery的onclick函数传递对象的id

我有一个Controller vendorController.并且视图文件是index.html.erb

我想通过onclick函数传递供应商的ID.
这是我的代码

在vendors_controller.rb下的代码

def index
  @vendor = vendor.all
end

index.html.erb的代码

<script language="javascript" type="text/javascript">
function func1(id) {
    alert(_id);
}

function func2(id) {
    alert(id);
}
</script>


<% @vendors.each do |vendor| %>
  <tr>
    <td><%=link_to vendor.name , '#',  onclick: "func1(1)", remote: true %></td>
    <td><%= link_to vendor.id, '#', :onclick => 'func2(vendor.id)' %></td>
  </tr>
<% end %>

对于func1()我收到警报.但对于func2我没有得到任何回应.
请帮助..提前谢谢你.

解决方法:

我认为你只需要逃脱onclick的内容以获得其中的实际id,而不仅仅是一个字符串“vendor.id” – 记住它只是一个字符串,因此它需要在其中包含正确的数据在浏览器中加载.

尝试

<td><%= link_to vendor.id, '#', :onclick => "func2(#{vendor.id})" %></td>

注意双引号,以允许字符串插值.

Javascript / jQuery onclick无法正常工作

Javascript / jQuery onclick无法正常工作

我做了一个test.html文档来测试脚本。不知何故它不起作用,我不明白为什么什么也没发生。该脚本位于-tags中,并带有-tag,而css也具有-
tags。为什么不起作用?这是代码

<!DOCTYPE html><html>    <head>        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js">        </script>        <script>        $(''#menu li a'').on(''click'', function() {            $(''li a.current'').removeClass(''current'');            $(this).addClass(''current'');        });        </script>        <style>        .current {            text-decoration: underline;        }        ul {            list-style-type: none;        }        a {            text-decoration: none;        }        </style>    </head>    <body>        <div id="menu">            <ul>                <li><a id="about-link"href="#">ABOUT</a></li>                <li><a id="events-link" href="#">EVENTS</a></li>                <li><a id="reviews-link" href="#">REVIEWS</a></li>                <li><a id="contact-link" href="#">CONTACT</a></li>            </ul>        </div>    </body></html>

答案1

小编典典

由于用于绑定事件处理程序的代码是在元素存在于中之前执行的DOM,因此事件未绑定到元素上。

要解决此问题,您可以

  1. 将您的代码包装在ready()回调中,以便DOM在加载完成后执行您的代码
  2. 将您的脚本移动到的末尾<body>,以便所有元素都存在于其中DOM,您可以在其上绑定事件

码:

$(document).ready(function () {    $(''#menu li a'').on(''click'', function () {        $(''li a.current'').removeClass(''current'');        $(this).addClass(''current'');    });});

编辑

您还可以使用load不推荐使用 )事件回调来绑定事件,但这将等待所有资源完全加载。

如果您想使用Vanilla
Javascript,可以DOMContentLoaded在上使用event document

javascript – JQuery onclick事件无法在第二页的JQuery数据表中识别

javascript – JQuery onclick事件无法在第二页的JQuery数据表中识别

我有 JQuery Datatable,我想删除行,当点击删除链接时.它适用于前10行,即第一页.当我从分页移动到另一个.它不起作用.这是我的代码:
$("#example tbody td.delete").click(function(event) {
                var row = $(this).closest("tr").get(0);
                oTable.fnDeleteRow( row );
    });

行的所有最后一行都有“删除”类.

我该怎么做才能为所有页面或所有记录工作?

解决方法

如果您使用的是jQuery 1.7或更早版本,则需要使用实时事件处理程序,因为后续页面是动态添加的.
$('#example tbody td.delete').live('click',function(event) {
    var row = $(this).closest('tr').get(0);
    oTable.fnDeleteRow( row );
});

jQuery .live()

编辑:

看起来人们仍在使用这个答案,所以要使用最新的最佳实践更新它,不要使用.live(). Live在1.7中被弃用,在1.9中删除.而是使用.on()处理程序.这可以通过将事件绑定到父元素,并使用您要作为可选选择器参数的实际元素来处理委托事件.要在上面的例子中使用它,它看起来像这样:

$('#example tbody').on('click','td.delete',function(event) {
    var row = $(this).closest('tr').get(0);
    oTable.fnDeleteRow( row );
});

javascript – jQuery onclick传递post变量并重新加载页面

javascript – jQuery onclick传递post变量并重新加载页面

我可以在点击超链接时传递帖子变量并重新加载页面吗?

要清楚我有这样的事情.
< a href =“test.PHP?name = test”>点击< / a>

如果启用了javascript,

我想我可以使用“event.preventDefault()”来抑制传递为GET变量.

所以现在onclick,name应该作为post变量而不是get传递.

如果禁用了javascript,
那么上面应该有效.

解决方法

您可以通过创建一个新的表单元素,将其指向href并在其上调用.submit()来实现.
<ahref="test.PHP?name=test">Click</a>

<script type="text/javascript">
    $('.postlink').click(function() {
        var form= document.createElement('form');
        form.method= 'post';
        form.action= this.protocol+'//'+this.hostname+this.pathname;
        $.each(this.search.slice(1).split(/[&;]/g),function() {
            var ix= this.indexOf('=');
            if (ix===-1) return;
            var input= document.createElement('input');
            input.type= 'hidden';
            input.name= decodeURIComponent(this.slice(0,ix));
            input.value= decodeURIComponent(this.slice(ix+1));
            form.appendChild(input);
        });
        document.body.appendChild(form);
        form.submit();
        return false;
    });
</script>

或者您可以改为执行AJAX请求,然后根据需要重新加载()页面.

但是,我不确定你为什么要这样做.什么用途是通常POST的链接,除非它不是? (不仅在JS被禁用/不可用时或者当它是搜索引擎时,而且当用户中间点击链接或尝试右键单击 – 将其加入书签或其他任何内容时.)

如果您想要的只是一个提交POST表单的按钮,那么最好真正使用真实表单并提交按钮,然后使用CSS将其重新设置为链接,如果这是您想要的样子.

javascript – jquery onclick函数未定义

javascript – jquery onclick函数未定义

我有一个ajax脚本,我试图从一个函数发布.我正在使用onlick href,但它不会出现未定义.这是使用wordpress.我试图在范围内外移动代码,但我似乎仍然无法让它工作.

    <div id="live">
    <div>
        <?PHP the_content(); ?>
        <div id="comment-display">
            <form method="post" action="index.PHP" id="comments_submit">
                <input type="hidden" id="nameBox" value="<?PHP echo $_SESSION['name'] ?>" name="name"/>
                <input type="hidden" id="emailBox" name="email" value="<?PHP echo $_SESSION['email']; ?>"/>
                <textarea id="chatBox" placeholder="Ask a question or make a comment" name="comment"></textarea>
                <a href="javascript:submitComment();" type="submit" id="submit" name="submit"> Submit Comment </a>
            </form>
            <br />
            <div id="displayComments"></div>
        </div>
    </div>
</div>
<script type="text/javascript">
    jQuery(function($) {
        setInterval(function(){
            $.ajax({
                method: "GET",
                url: "<?PHP echo get_template_directory_uri()?>/get_chat.PHP"
            }).done(function(html){
                $('#displayComments').html(html);
            });
        }, 2000);

        function submitComment(){
            $.ajax({
                method: "POST",
                url: "template-live.PHP",
                data: {submitComment:$('#chatBox').val(),submitName:$('#nameBox').val(),submitEmail:$('#emailBox').val()}
            }).done(function(html){
                alert('Your comment has been submitted, and will be displayed after approval.');
                $('#chatBox').val('');
            });
        }
    });
</script>

谢谢 :)

解决方法:

当你做javascript:submitComment(),它调用一个全局函数submitComment.由于submitComment是在jQuery(function($){…})函数中定义的,因此它不是全局的.因此,window.submitComment未定义(因此undefined不是函数).

全局变量存储在window对象中.

因此,您可以将submitComment公开为全局:

window.submitComment = function () {...}

请注意,您应该尽可能避免使用全局变量.在这种情况下,您可以通过添加:

$("#submit").click(submitComment);
// In this case, you shouldn't declare submitComment as a global anymore

由于您处于表单中,因此您希望在单击a元素时停止默认浏览器行为,方法是在函数末尾使用return false.

关于javascript – 通过Ruby On Rails中的jquery的onclick函数传递对象的id的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Javascript / jQuery onclick无法正常工作、javascript – JQuery onclick事件无法在第二页的JQuery数据表中识别、javascript – jQuery onclick传递post变量并重新加载页面、javascript – jquery onclick函数未定义等相关内容,可以在本站寻找。

本文标签: