Javascript jQuery使用rails序列化不';不适用于自定义ID
我很确定这是某种Javascript错误,而不是Rails错误,在我的id上做了无数次puts()测试之后 我想做的是使用jQuery的serialize函数序列化一堆li。我想根据一组自定义的id来做。。。在我的例子中,podli-1、podli-2、podli-3等等。我尝试使用序列化“表达式”选项来实现这一点 当我尝试用警报(如下所示)调试它时,我从中得到的结果是:id=undefined&id=undefined&id=undefined&id=undefined&id=undefined&id=undefined&id=undefined&id=undefined --这实际上是李的正确编号,但由于某些原因,所有id都未定义。正如我所说的,所有这些都在Rails中工作,但是有一些JS错误 以下是Rails代码Javascript jQuery使用rails序列化不';不适用于自定义ID,javascript,jquery,ruby-on-rails,serialization,jquery-ui-sortable,Javascript,Jquery,Ruby On Rails,Serialization,Jquery Ui Sortable,我很确定这是某种Javascript错误,而不是Rails错误,在我的id上做了无数次puts()测试之后 我想做的是使用jQuery的serialize函数序列化一堆li。我想根据一组自定义的id来做。。。在我的例子中,podli-1、podli-2、podli-3等等。我尝试使用序列化“表达式”选项来实现这一点 当我尝试用警报(如下所示)调试它时,我从中得到的结果是:id=undefined&id=undefined&id=undefined&id=undefined&id=undefine
<% @pods.each do |podli| %>
<% @podli = podli %>
<% @iden = 'podli-' << @podli.id.to_s %>
<li id="<%= @iden %>" class="ui-state-default">
....
</li>
<% end %>
....
下面是javascript
$(document).ready(function(){
transitions();
//$( "#sortable" ).sortable({containment: 'parent'});
$( "#sortable" ).sortable({ items: '.ui-state-default', containment: 'parent'})//for moving the pods about
$( "#sortable" ).disableSelection();
//$("#newspod" ).val("Enable Sort").closest("#newspod").removeClass("sortable")
$('#sortable').live('sortstop', function(event) {
var u = $(this).sortable('serialize', { key: 'id', expression: /podli-\d/ })// + '&index=' + jQuery(this).attr("id").substring(19);
alert(u);
$.ajax({
type: 'POST',
data: { display_order: u },//$('#receiving-list').sortable('serialize') + '&index=' + jQuery(this).attr("id").substring(19),
url: "<%= sort_dashboards_path %>"
})
});
$(文档).ready(函数(){
过渡();
//$(“#可排序”).sortable({containment:'parent'});
$(“#sortable”).sortable({items:'.ui state default',containment:'parent'})//用于在周围移动播客
$(“#可排序”).disableSelection();
//$(“#新闻播客”).val(“启用排序”).closest(“新闻播客”).removeClass(“可排序”)
$('#sortable').live('sortstop',函数(事件){
var u=$(this).sortable('serialize',{key:'id',expression:/podli-\d/})/+'&index='+jQuery(this).attr(“id”).substring(19);
警报(u);
$.ajax({
键入:“POST”,
数据:{display_order:u},//$('#receiving list').sortable('serialize')+'&index='+jQuery(this.attr(“id”).substring(19),
网址:“
})
});
})) 当您调用“serialize”方法(通过“sortable”插件)时,您的“expression”regex必须包含一个捕获组,该组包含的值应为:
var u = $(this).sortable('serialize', { key: 'id', expression: /podli-(\d+)/ });
通过将“\d”(请注意,我无法控制自己,我在括号中添加了“+”,以防有超过10个)括起来,插件将从正则表达式中得到它所期望的结果
该方法的jQuery UI文档非常糟糕。非常感谢!我将把这个标记为已解决,但你能解释一下什么是捕获组以及为什么我需要它吗?(我意识到这与李的区别有关——他们的身份证号码)