HTML/Javascript/jQuery页面有一个功能,可以在一种状态下工作,但不能在另一种状态下工作
我有一个奇怪的事情发生,页面的一部分在同一时间工作,而不是在页面的不同状态下工作 请看这一页: 如果你点击“有助于停止或抑制压力进食的移动应用”,它会将其扩展成一系列形式。这就是本页的工作原理 现在,如果您试图通过单击“建议解决方案”来建议一个新的解决方案,您将获得一个制作一个解决方案的表单。填写表单后,系统会向您显示之前提出的建议解决方案以及您的解决方案,但问题是,如果您单击其中任何一个,页面将转到相同的url,并在其末尾添加#,因此似乎有问题 要重新填写表单,您需要测试登录凭据:HTML/Javascript/jQuery页面有一个功能,可以在一种状态下工作,但不能在另一种状态下工作,javascript,jquery,html,Javascript,Jquery,Html,我有一个奇怪的事情发生,页面的一部分在同一时间工作,而不是在页面的不同状态下工作 请看这一页: 如果你点击“有助于停止或抑制压力进食的移动应用”,它会将其扩展成一系列形式。这就是本页的工作原理 现在,如果您试图通过单击“建议解决方案”来建议一个新的解决方案,您将获得一个制作一个解决方案的表单。填写表单后,系统会向您显示之前提出的建议解决方案以及您的解决方案,但问题是,如果您单击其中任何一个,页面将转到相同的url,并在其末尾添加#,因此似乎有问题 要重新填写表单,您需要测试登录凭据: logi
login: testing@problemio.com
password testing
以下是服务器端打印该div内容的函数:
function printSuggestedSolutions ( $suggested_solutions_result )
{
if (mysql_num_rows($suggested_solutions_result) > 0 )
{
while($row = mysql_fetch_assoc($suggested_solutions_result))
{
$suggested_solution_id = $row['suggested_solution_id'];
$problem_id = $row['problem_id'];
$solution = $row['solution'];
$solution_name = $row['solution_name'];
$day = $row['DAYOFMONTH(solution_date)'];
$day_name = $row['DAYNAME(solution_date)'];
$year = $row['YEAR(solution_date)'];
$month = $row['MONTH(solution_date)'];
$first_name = $row['first_name'];
$last_name = $row['last_name'];
$email = $row['email'];
$formatted_date = $day_name.', '.$month.'-'.$day.'-'.$year;
$suggester_id = $row['suggester_id'];
$solution = nl2br($solution);
// Have to make the better name and picture thing.
$photo_path = $row['photo_path'];
$small_thumb = $row['small_thumb'];
$mid_thumb = $row['mid_thumb'];
if ( isset ( $mid_thumb ) )
{
$img_src = $mid_thumb;
}
else
{
$img_src = "http://www.problemio.com/img/happy.jpg";
}
echo '<div>';
echo '<div style="padding-top: 15px; float:left; width: 150px;">';
echo '<img src='.$img_src.' width="100" >';
echo '<p>Comment by: <br />'.$first_name.' '.$last_name.'</p>';
echo '</div>';
echo '<div style="float:left; width: 540px; ">';
echo '<p style="font-family: arial;">Solution name: <a class="expand_suggested_solution" style="color: #295B7B;" href="#" data-suggestion_id="'.$suggested_solution_id.'" data-problem_id="'.$problem_id.' ">'.$solution_name.'</a></p>';
echo '<p style="font-family: arial;">'.$solution.'</p>';
echo '<p style="color: #B77F37;">on '.$formatted_date.'</p>';
echo '</div>';
echo '</div>';
echo '<div style="clear:both;"></div>';
}
}
else
{
echo '<p>There are no suggestions for future solutions yet. Suggest a solution.</p>';
}
}
函数printSuggestedSolutions($suggested_solutions_result)
{
if(mysql\u num\u行($suggered\u solutions\u result)>0)
{
而($row=mysql\u fetch\u assoc($suggered\u solutions\u result))
{
$suggestived_solution_id=$row['suggestived_solution_id'];
$problem_id=$row['problem_id'];
$solution=$row['solution'];
$solution_name=$row['solution_name'];
$day=$row['DAYOFMONTH(解决方案日期)';
$day_name=$row['DAYNAME(解决方案_日期)';
$year=$row['year(solution_date)';
$month=$row[“月(解决方案日期)”;
$first_name=$row['first_name'];
$last_name=$row['last_name'];
$email=$row['email'];
$date=$day\u name.','.$month.'-'.$day.-'.$year;
$suggester_id=$row['suggester_id'];
$solution=nl2br($solution);
//必须要有更好的名字和图片。
$photo_path=$row['photo_path'];
$small_thumb=$row['small_thumb'];
$mid_thumb=$row['mid_thumb'];
如果(isset($mid_thumb))
{
$img_src=$mid_thumb;
}
其他的
{
$img_src=”http://www.problemio.com/img/happy.jpg";
}
回声';
回声';
回声';
回显“注释人:
”。$first\u name.'。$last\u name.”;
回声';
回声';
echo“解决方案名称:
”;
echo“”.$solution.“
”;
在“$formatted\u date”上回显“;
}
}
您喜欢在服务器端创建的HTML的内联样式吗?;)
在这两种情况下,HTML都如下所示:
<p style="font-family: arial;">
Solution name:
<a class="expand_suggested_solution" data-problem_id="219" data-suggestion_id="75" href="#" style="color: #295B7B;">test1</a>
</p>
解决方案名称:
如果不进行深入调试,而是在URL末尾附加一个“#”,而不是运行一些JS行为,则可能是以下两种情况之一:
返回false单击处理程序中的代码>
这两种方法听起来都可能吗?在单击处理程序中,JS正在设置display:none以显示具有单击处理程序的元素。这可能会将元素从dom中删除,并使其失去单击侦听器 你能把这些线改一下吗
document.getElementById("add_existing_suggestion").style.display = 'none';
document.getElementById("add_existing_suggestion").style.display = 'inline';
到
我试图非常仔细地检查显示的html之间是否存在不一致,但它似乎是由相同的代码显示的,这让我非常困惑,为什么会发生这种情况,在某一点上它工作,而在另一点上,某些东西关闭了。在填写表单后,锚的href确实设置为#。我不知道是通过客户端脚本还是服务器端设置的。一个代码示例将是helpful@DerekOk即将发布打印该内容的代码Ok,看起来链接是在服务器端动态创建的。在这种情况下,您可能需要使用jQuery live()绑定事件,以将事件处理程序持久化到所有元素(现在和将来)@Derek Hunziker哦,是的,live Function!!!只是为了让我弄清楚,它到底应该在哪里,怎么做?谢谢让我看看单击处理程序是否不再正确绑定。我肯定返回false。是的,你是对的,没有调用单击处理程序。不知道为什么,虽然很有趣,但我没想过。让我试试。只是试了一下,但不太管用。我对它应该是什么样子感到困惑,因为我当前的click处理程序中有另一个ajax调用和一堆代码。“你能帮我理解整个事情会是什么样子吗?”GeekedOut我刚刚更新了我的答案。我以为你在用JS创建元素,但是你在创建所有的元素,并隐藏那些没有被使用的元素。问题是javascript在运行之前不会等待html向dom注册。由于click处理程序的代码在html之前,因此无法register@sissnb啊,我想我明白你的意思了…再试一次thing@sissnb顺便说一句,从我的js中可以看到,我的js和jquery不是都在document.ready中了吗?
document.getElementById("add_existing_suggestion").style.visibility = 'hidden';
document.getElementById("add_existing_suggestion").style.visibility = 'visible';