根据按钮的类型将选择器分配给变量以调用它们

时间:2011-05-07 15:36:00

标签: javascript jquery variables css-selectors

这是我能想到的最好的描述。我通常不会发帖,但老实说,我无法解决这个问题。

仍处于jquery学习模式,基本上我想要完成的是,根据提交的按钮类型,脚本将变量分配给页面上的div。我正在制作的是用户脚本的管理员端,以允许他们更新页面上显示的特定div。

当我放入实际的选择器时,脚本可以正常工作。

当页面加载时,它将采用与之对应的数据库字段并加载它。一旦他们按下更新按钮,就会出现一个新的div。管理员输入他的新数据(他想要显示的新信息)并更新mysql表,然后通过jquery的ajax将其拉回来。

很抱歉很长的解释。就像我说的那样,我从未真正发布过,只是总是喜欢自己搞清楚。 php页面

<?php //
if(isLoggedIn())
{
echo '<button id="adultClassButton">Edit Class Information</button>';
}
?>
<div class="class" id="adultClass"><?php
$row = checkPost('adult');
echo $row['info'];
?>
</div>

<?php


echo '<div id="adultClassInput">
  <textarea rows="2" cols="80" id="adultClassUpdate"></textarea>
  <input type="hidden" id="className" name="adult"/>
  <button id="adult">Save the Updated Class Info</button></div>';

?>

javascript(jquery)文件

$(".button").click(function(){
var button = $(this).attr('id');
if (button == 'adult'){

    var classDiv = $("#adultClass");
    var className = $("#className");
    var classDesc = $("#adultClassUpdate").val();
    var classUpdateDiv = $("#adultClassInput");
    postData(classDiv, className, classDesc, classUpdateDiv);
}
});

function postData(classDiv, className, classDesc, classUpdateDiv){
$.ajax({
url: 'insert.php',
type: 'POST',
data: "name="+ className+ "& info="+ classDesc,
success:function(data){
$("#" + classDiv).html(data);
}
})
$("#" + classDesc).val('');
$("#" + classUpdateDiv).hide();
}

就像我说的,如果我在函数中有正常的选择器,它就可以正常工作。但就目前而言,我只是感到难以理解。

非常感谢!

2 个答案:

答案 0 :(得分:0)

你的功能应该是这样的:

function postData(classDiv, className, classDesc, classUpdateDiv){
  $.ajax({
    url: 'insert.php',
    type: 'POST',
    data: {"name": className.val(), "info": classDesc}
    success:function(data){
      classDiv.html(data);
    }
  })
  $("#"+classDesc).val('');
  classUpdateDiv.hide();
}

因为你已经将jquery对象(不是字符串)传递给你的函数,classDesc除外。

希望这会有所帮助。干杯

答案 1 :(得分:0)

classDiv是一个jquery对象,而不是元素的ID。所以当你使用这个

$("#" + classDiv).html(data);

这不按预期工作。

尝试

classDiv.html(data);