我需要一个动态表单,应该像这样工作:
但我无法让它发挥作用。这是我的HTML:
<button onclick='addDay();'>
<div class='content'>
</div>
我的Javascript:
//FUNCTION 1: LOAD AJAX CONTENT
function addDay()
{
baseUrl = $('input#helper-base-url').val();
//Set caching to false
$.ajaxSetup ({
cache: true
});
//Set loading image and input, show loading bar
var ajaxLoad = "<div class='loading'><img src='"+baseUrl+"assets/images/loading.gif' alt='Loading...' /></div>";
var jsonUrl = baseUrl+"car/add_day/"+count;
$("div#loading").html(ajaxLoad);
$("div#content").hide();
$.getJSON(
jsonUrl,
{},
function(json)
{
temp = "";
if(json.success==true)
{
temp = json.content;
}
//Display the result
$("div#content").show();
$("div#content").html($("div#content").html()+temp);
$("div#loading").hide();
});
}
//FUNCTION 2: MODIFY AJAX CONTENT
$("#content").on("change", "select.switch", function (e) {
e.preventDefault();
//Get which row is to be changed in background's color
id = this.id;
id = id.substr(6);
//Add class "package1" which change row's background color
row = "row"+id;
row.addClass('package1');
});
我的PHP
function add_day($count)
{
$temp = "<div class='row".$count."'>
<select id='switch".$count."' class='switch'>
<option value='1'>Package 1</option>
<option value='2'>Package 2</option>
</select>
</div>";
$result = array(
'success' => true,
'content' => $temp,
);
$json = json_encode($result);
echo $json;
}
PS。表单并不像这样简单,但为了使问题解决更容易,我删除了细节。但我似乎无法动态改变课程。我们在这里有解决方案或好工作吗?
编辑1: 对不起,我之前没有说清楚。获取id或变量没有问题(没关系,当我提醒它正确的值出来时 - 但是在我添加类之后,没有看到颜色变化)。我跑了:
一个。单击按钮,加载Ajax内容。
湾 ℃。失败:在更改时,将类“package1”添加到div行。 (所以,我没有问题获得正确的id或类名。当我提醒变量它给出正确的结果,但颜色不会改变。我无法检查是否成功添加了类。)< / p>
答案 0 :(得分:2)
$("#content").on("change", "select.switch", function (e) {
e.preventDefault();
$('.row' + $(this).attr('id').replace('switch', '')).addClass('package1');
});
答案 1 :(得分:1)
假设其他一切都没问题
//Get which row is to be changed in background's color
id = this.id;
id = id.substr(6);
//Add class "package1" which change row's background color
row = "row"+id;
row.addClass('package1');
这就是问题所在。要获得attibute id,你必须做
var id = $(this).attr('id').substr(6);
您必须使用$(this)
而不是this
来使用所有jQuery功能。
下面
$(row).addClass('package1');
所以,完整代码:
//Get which row is to be changed in background's color
var id = $(this).attr('id').substr(6);
//Add class "package1" which change row's background color
$('.row'+id).addClass('package1');
答案 2 :(得分:0)
将类更改为id解决了问题(使用#row0而不是.row0)。对不起,谢谢你的时间:))