Php 一般jquery结构问题
请看一下这个:Php 一般jquery结构问题,php,jquery,ajax,Php,Jquery,Ajax,请看一下这个: $(function () { $("#add").click(function() { val = $('#add_lang').val(); val1 = $('#add_lang_level').val(); listitem_html = '<li>'; listitem_html += val + ' <strong>('+ val1 + '/100)</strong&g
$(function () {
$("#add").click(function() {
val = $('#add_lang').val();
val1 = $('#add_lang_level').val();
listitem_html = '<li>';
listitem_html += val + ' <strong>('+ val1 + '/100)</strong>';
$.ajax({ url: 'addremovelang.php', data: {addname: val,addlevel: val1}, type: 'post', success: function(output) { alert(output); }});
listitem_html += '<a href="#" class="remove_lang">Remove</a>'
listitem_html += '</li>';
$('#langs').append(listitem_html);
});
$('.remove_lang').live('click', function(e) {
e.preventDefault();
$(this).parent().remove();
$.ajax({ url: 'addremovelang.php', data: {delname: val}, type: 'post', success: function(output) { alert(output); }});
});
});
$(函数(){
$(“#添加”)。单击(函数(){
val=$('#add_lang').val();
val1=$('add#lang_level').val();
listitem_html=“”;
listitem_html+=val+'('+val1+'/100);
$.ajax({url:'addremovelang.php',数据:{addname:val,addlevel:val1},键入:'post',成功:函数(输出){alert(输出);}});
listitem_html+=“”
listitem_html+=' ';
$('#langs').append(listitem_html);
});
$('.remove_lang').live('click',函数(e){
e、 预防默认值();
$(this.parent().remove();
$.ajax({url:'addremovelang.php',数据:{delname:val},键入:'post',成功:函数(输出){alert(输出);}});
});
});
当用户点击带有add id的按钮时,这个简单的jquery脚本将字符串添加到html列表中。此外,它会在每一行上放置一个remove链接,因此当用户点击remove时,它会触发函数remove_lang,并删除该字符串
当用户添加一个字符串时,该文本来自一个文本字段,我将其存储在变量val中(如代码第5行所示)。然后我通过Ajax调用一个php脚本,将这些信息添加到我的mysql数据库中
但是,当用户删除字符串时,我不知道如何知道删除了什么字符串,我的意思是,这个字符串的名称,我需要发送到我的php脚本,以便将其从数据库中删除
看看这个版本的代码,没有ajax调用:
谢谢你的帮助 您需要将字符串看作一组元素:
var li = $('<li/>');
var strong = $('<strong/>', { text: '(' + val1 + '/100)' });
var link = $('<a/>');
link.click(function()
{
// Insert code here for the link click
});
li.append(strong).append(link);
$('#langs').append(li)
只需获取对元素的引用,然后附加click事件处理程序 单击“删除”时,可以执行以下操作:
val = $(this).parent().find('input').val();
将从您添加的隐藏输入中获取值:
面向对象的编程方法将有助于保持操作的组织性。基本上,您将每个给定语言的操作存储在对象中,在删除或添加该语言时修改该语言的操作 这将在每次添加或删除语言时将“存储”对象打印到控制台,以便清楚地看到发生了什么 这里是JS代码(你会注意到我几乎没有做任何更改):
languageActions={}
$(函数(){
$(“#添加”)。单击(函数(){
val=$('#add_lang').val();
listitem_html=“”;
listitem_html+=val;
listitem_html+='';
listitem_html+=“”
listitem_html+=' ';
$('#langs').append(listitem_html);
//现在将其添加到我们的对象中
languageActions[val]=“添加”;
日志(languageActions);
});
$('.remove_lang').live('click',函数(e){
e、 预防默认值();
val=$(this.prev().val();
$(this.parent().remove();
//现在更改它在languageActions中的值
languageActions[val]=“删除”;
日志(languageActions);
});
});
我要指出的另一件事是,您并不真正需要这个隐藏的输入元素,因为您是通过AJAX而不是标准表单提交来完成的。相反,您可以只对HTML执行
SpanishRemove
,然后单击.remove\u lang将执行$(this).prev().text()
,而不是$(this).prev().val()
。没什么大不了的,但是你的HTML会更干净一些。我想这是一个简单的问题:
$i = 1;
while(xxx){
//get the list with a different value for each element
echo '<div id="add_' . $i . '>$whatever</div>';
$i++;
}
$i=1;
while(xxx){
//为每个元素获取具有不同值的列表
echo‘你好!我测试了你的解决方案,但是删除函数上的val变量是空的,知道吗?这是一个经过你修改的版本,它可能让你看到问题@DomingoSL-val变量不是空的。你试过我发布的小提琴吗?它对我非常有效。在我的小提琴中(最后一个带有你的mods的小提琴)是空的,有点奇怪。你指的是你在上面贴了几条评论的小提琴吗?jsfiddle.net/xw83U?因为那个版本根本没有我的修改。如果我不添加隐藏参数呢?我不想添加它。有没有其他方法来检索语言?这里有一个更详细的解释代码:从你的演示中,修改它您至少可以使用:val=$(this).parent('li').text().replace('Remove','').replace(/\(+(.*))+/g,”);
从您创建的
中获取文本,删除删除链接,然后使用正则表达式删除(blah)
括号。这可能不是最好的,但会起作用:或者将语言包装起来,这样做,请参见-如果您只想使用语言,如果您也想使用级别,则需要更多的时间才能获得?完全没有问题-很高兴能提供帮助!
languageActions = {}
$(function () {
$("#add").click(function() {
val = $('#add_lang').val();
listitem_html = '<li>';
listitem_html += val;
listitem_html += '<input type="hidden" name="languages[]" value="' + val + '" /> ';
listitem_html += '<a href="#" class="remove_lang">Remove</a>'
listitem_html += '</li>';
$('#langs').append(listitem_html);
//now add it to our object
languageActions[val] = 'add';
console.log(languageActions);
});
$('.remove_lang').live('click', function(e) {
e.preventDefault();
val = $(this).prev().val();
$(this).parent().remove();
//now change it's value in languageActions
languageActions[val] = 'remove';
console.log(languageActions);
});
});
$i = 1;
while(xxx){
//get the list with a different value for each element
echo '<div id="add_' . $i . '>$whatever</div>';
$i++;
}