将jquery应用于从php回传的元素
编辑:问题是由于JQUERY库加载不正确引起的,在我的原始问题中没有明确说明这个问题。抱歉 我使用jquery隐藏、发布php查询的结果,然后将结果回显到两个单独的div。然后我希望能够在这些div之间交换生成的图像。第一部分工作正常,但我无法让任何其他jquery脚本在这些div上工作(例如,可排序、可拖放等) 在过去的几周里,我对脚本编写还不熟悉。我想我需要在发送php之前对其进行json编码,但我在网上很难找到关于如何进行编码的明确指导。非常感谢您提供的任何帮助,无论是描述性的、对特定介绍资源的引用(例如,不是php.net),还是代码本身 我在下面包括相关的脚本。这一个有效:将jquery应用于从php回传的元素,php,jquery,mysql,draggable,echo,Php,Jquery,Mysql,Draggable,Echo,编辑:问题是由于JQUERY库加载不正确引起的,在我的原始问题中没有明确说明这个问题。抱歉 我使用jquery隐藏、发布php查询的结果,然后将结果回显到两个单独的div。然后我希望能够在这些div之间交换生成的图像。第一部分工作正常,但我无法让任何其他jquery脚本在这些div上工作(例如,可排序、可拖放等) 在过去的几周里,我对脚本编写还不熟悉。我想我需要在发送php之前对其进行json编码,但我在网上很难找到关于如何进行编码的明确指导。非常感谢您提供的任何帮助,无论是描述性的、对特定介绍
<script type='text/javascript'>
$(document).ready(function(){
$("#search_results").slideUp();
$("#search_button").click(function(e){
e.preventDefault();
ajax_search();
});
$("#search_term").keyup(function(e){
e.preventDefault();
ajax_search();
});
});
function ajax_search(){
$( "#search_results").show();
var search_val = $("#search_term").val();
var search_valb = $("#search_theme").val();
$.post( "./find.php", {search_term : search_val, search_theme : search_valb}, function(data){
if (data.length>0){
$( "#search_results").html(data);
$( ".portfolio_container").hide();
$( ".portfolio_draggables").hide();
$( "ul.clickable_container li").click(function(){
$( ".portfolio_draggables").hide();
var activeImage = $(this).find("a").attr('href');
$( ".portfolio_container").show();
$( activeImage).show();
return false;
});
};
});
};
</script>
对于那些对更多上下文感兴趣的人,我将使用jquery发布来自表单的输入。Php脚本匹配输入到mysql数据库中相应字母图像的字符。然后,它将这些图像的列表回显到一个div,并将该字母的所有图像的整个组合回显到另一个div。其想法是用户可以从第二个输出中拖动图像,以替换另一个div中的字母图像
非常感谢
$("ul.clickable li")
未正确选择HTML id为clickable且类别为clickable容器的元素。更改元素的类(在jQuery/CSS中使用.选择)或id(使用#选择)
应该有用
此外,/src是不必要的,因为src不是标记。直接在PHP脚本中编写HTML并不是最干净的方法。我强烈建议您查看或加深了解。谢谢您的关注。但我认为还有更根本的问题。我已经尝试了一百万种方式来选择元素,包括你建议的方式,但它不起作用。真的,我提交了这个问题b/c我想知道我在这里的想法是否有更根本的错误。就像jquery甚至没有“看到”php一样,因为它在页面加载后被回显。诸如此类的事情。不管怎样,谢谢你抽出时间。我去看看你要的那本书。有这么多,所以得到一个rec很好。jQuery从来没有见过PHP。它可以看到PHP生成的响应HTML。由于您正在对find.php进行AJAX调用,因此在客户端会得到一个HTML片段,jQuery应该能够完全在其数据对象内部进行操作。这就是工作搜索块正在做的事情。我怀疑您的主要问题只是选择元素的方式。使用AJAX API发布完整的代码可能有助于诊断您的问题。此外,由于您尝试做的基本上是拖放,并且您已经在使用jQuery UI Dragable,我不确定您为什么不尝试遵循Dropable示例,谢谢您的提示。非常感谢。拖放最终,仅针对此测试进行排序。本打算用我的最后一条消息编写HTML,而不是Php。只是想知道jquery是否看不到回响的html,因为它是在表单输入之前触发的。再次感谢。我将关闭此线程,因为您的答案在技术上是正确的。我只是搞错了这个问题。最后我发现这与jquery库的加载顺序有关。我很抱歉占用你的时间在一个问题上,这是看不见的根据我张贴。您的其他记录仍然很感谢。我们也会查看你的其他帖子,以获得提示。谢谢
$alpharray = array();
while($row = mysqli_fetch_assoc($result)){
$alpharray[$row['letter']][] = $row;
}
$first = $second = array();
foreach( str_split( $_POST['search_term']) as $alpha)
{
$first[] = "<li><a href = '#$alpha'><img class='imgs_clickable_droppable' img src='../Letterproject/images/{$alpharray[$alpha][0]['photoPath']}' width='100' height='140'></src></a></li>";
$editable = array("<div id='$alpha' class='portfolio_draggables'>");
foreach ($alpharray[$alpha] as $tempvar)
{
$editable[] = "<a href ='findall.php'><img src='../Letterproject/images/{$tempvar['photoPath']}' width='70' height='110'></src></a>";
}
$editable[] = '</div>';
$second[] = implode( '', $editable);
}
echo '<ul id = "clickable" class="clickable_container">';
echo implode( '', $first);
echo '</ul>';
echo '<div id="portfolio" class = "portfolio_container">';
echo implode( '', $second);
echo '</div>';
$(function() {
$("ul.clickable li").draggable({
containment: 'parent',
revert: 'invalid',
opacity: '0.91',
cursor: 'crosshair'
});
$('.clickable').sortable();
});
$("ul.clickable li")
$("#clickable")