Ajax POST 和数据目标选择器
Posted
技术标签:
【中文标题】Ajax POST 和数据目标选择器【英文标题】:Ajax POST and data-target selector 【发布时间】:2014-04-21 03:18:54 【问题描述】:查看底部更新
我正在开发一个服务器目录导航的东西。
我有一个 ajax 脚本,它在更改时获取所选下拉选项的值(该值是所选目录的相对路径),将值发送到 php 函数,然后 php 函数返回一个数组,其中包括用于响应功能的新下拉选项以替换旧选项,以及用于向后导航的面包屑链接。
使用下拉选项发布数据并从 php.ini 获取响应时,一切正常。
但现在我正在尝试复制它,以便单击面包屑链接将执行相同的操作,用于向后导航,但我没有让它响应。在 php 生成的 html 中,给定的 A 标签如下所示:
<a href="javascript:" data-target="'.$piecelink[$k].'">'.$piece.'</a>
所以我使用数据目标的方式与使用下拉列表中的选定值相同。然后我的第二个 ajax 函数只是工作原件的副本,主选择器从下拉列表更改为面包屑链接,on.('change')
更改为on.('click')
,this.value
更改为this.data('target')
,如下所示。但是我没有通过单击面包屑链接得到响应:
(function($)
$(document).ready(function()
$('div#ghsc-upload-path a').on('click', function()
$.post(
PT_Ajax.ajaxurl,
action : 'ajax-inputtitleSubmit',
dataType : 'html',
pathpart : this.data('target'),
nextNonce : PT_Ajax.nextNonce
,
function( response )
$container = $('div#ghc-upload-path-container');
$putpath = $('div#ghsc-upload-path');
$dropdown = $('select#ghsc-upload-directories');
$dropdown.empty().append(response.ops).trigger('liszt:updated');
$putpath.html(response.path);
);
return false;
);
);
)(jQuery);
有什么建议吗?
更新
我想我知道为什么它不起作用。这是因为 a
元素不在原始页面加载的页面上。但我不知道如何让脚本认识到他们是他们的。我认为这是因为它包含在 document.ready 中,但是如何触发对 dom 的重新扫描?
【问题讨论】:
【参考方案1】:尝试换行:
$('div#ghsc-upload-path a').on('click', function()
进入
$('div#ghsc-upload-path a').click(function()
我还没有测试过,但它可能会有所帮助
【讨论】:
我也试过了,但没用。不过谢谢。我刚刚使用.live('click', function)
获得了一些基本功能。进一步探索,但 .live() 不是被弃用了吗?【参考方案2】:
找到了。问题不是现场直播,但 .live 已被弃用,所以我去了现场直播页面 (http://api.jquery.com/live/),它向我展示了如何正确转换为 .on()。下面是我如何调用该函数以使其工作:
$( document ).on( 'click', 'span[id^=ghsc-pathpart-]', function()
【讨论】:
以上是关于Ajax POST 和数据目标选择器的主要内容,如果未能解决你的问题,请参考以下文章
从 jquery ajax 成功数据中获取 css this 和 value 选择器
一个简单风格且功能强大的选择器,包括ajax远程数据、自动完成、分页、标记、i18n和键盘导航功能