【问题标题】:Unable to select id attribute from ajax returned page无法从 ajax 返回的页面中选择 id 属性
【发布时间】:2012-03-11 11:53:49
【问题描述】:

我想实现一个包含 2 个列表的页面,它允许用户在两​​个列表之间拖放项目。这可以通过使用 jQuery UI 库来实现:

html:

<!--list A-->
<div id='list_a'>
  <ul class='sortable'></ul>
</div>

<!--list B-->
<div id='list_b'>
  <ul class='sortable'>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
  </ul>
</div>

js:

$( "ul.sortable" ).sortable({
    connectWith: "ul",
    dropOnEmpty: true
});

$( ".sortable" ).disableSelection();

问题是,当我使用 jQuery ajax 生成list B 时,拖放不再起作用。我怀疑jQuery无法选择ul .sortable,因为当我查看HTML源时,我只能看到&lt;div id='list_b'&gt;&lt;/div&gt;

我的 ajax 代码:

$('#field_a h3 a').click(function() {
    var form_data = {
        required_data:$(this).text().trim(),
        ajax: 1
    };

    $.ajax({
        url: 'get_list_b',
        dataType: 'html',
        type:'POST',
        success: function(msg){
            $('#list_b').html(msg);
        }
   });
});

我正在使用 CodeIgniter。有什么想法吗?

【问题讨论】:

  • 我相信这个其他 SO 问题基本相同:stackoverflow.com/questions/1672182/jquery-sortable-live
  • 请注意,“查看源代码”永远不会显示由 JS 或 JQ 创建的标签。它只显示从 Web 服务器接收到的 HTML。
  • @JamesAylett:谢谢。
  • @summerbulb:难怪“查看源代码”看不到代码,谢谢。

标签: php jquery jquery-ui codeigniter


【解决方案1】:

第一个:

元素 $('#field_a h3 a') 是什么?

秒:

它不起作用,因为当你这样做时 $('#list_b').html(msg) - 你正在删除 UL 元素。

所以,您的绑定引用了不存在的元素。

你可以这样做:

$.ajax({
        url: 'get_list_b',
        dataType: 'html',
        type:'POST',
        success: function(msg){
            var list=$('#list_b');
            list.html(msg);
            $( "ul.sortable",list ).sortable({
                connectWith: "ul",
                dropOnEmpty: true
            });
        }
   });

如果你能把你的例子放到http://jsfiddle.net/上会更有帮助

【讨论】:

  • $('#field_a h3 a') 只是一个带链接的h3,可以触发加载列表b的调用。谢谢你的解释,它现在正在工作:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-29
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 2010-10-19
  • 2013-10-10
相关资源
最近更新 更多