Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript循环列表中的按钮将返回列表的_Javascript_Jquery_Loops - Fatal编程技术网

Javascript循环列表中的按钮将返回列表的

Javascript循环列表中的按钮将返回列表的,javascript,jquery,loops,Javascript,Jquery,Loops,我得到了这个javascript循环,它生成了一个无序列表,其中可能包含50个列表项。。现在,我想在每个列表项中放置一个按钮,用于将内容存储在数据库中。想想转发 我想出了一种方法,将按钮和listitem中的内容放在循环中的隐藏输入中,但这似乎是一个糟糕的快捷方式。像这样: html += "<form action=\"add.php\" method=\"post\"><input type=\"hidden\" value=\"" + listitem + "\" nam

我得到了这个javascript循环,它生成了一个无序列表,其中可能包含50个列表项。。现在,我想在每个列表项中放置一个按钮,用于将内容存储在数据库中。想想转发

我想出了一种方法,将按钮和listitem中的内容放在循环中的隐藏输入中,但这似乎是一个糟糕的快捷方式。像这样:

html += "<form action=\"add.php\" method=\"post\"><input type=\"hidden\" value=\"" + listitem + "\" name=\"item\"\/>";
    html += "<input type=\"submit\" value=\"repost\" \/><\/form>";
在循环中使用按钮而不是输入。但是我甚至不能让jQuery响应按钮的点击。这是可能的还是我应该走捷径

循环=

  var html = "<li><h2 class=\"postTitle\">" + title + " <\/h2>";
                html += "<p id=\"postText\" class=\"postText\">" + text + "</p></li>";
$('#Content').append($(html));
以及循环结束的html:

<ul id="list">
<div id="Content">
    &nbsp;
</div>
</ul>

从上面的代码中,所使用的jQuery选择器按钮将与代码中的任何内容都不匹配,因为您使用了按钮的输入;尝试:

$("input[type=submit]").click(function () {
    ...
});

理想情况下,请使用一个更有针对性的选择器,因为我认为您不希望每个提交按钮都这样做:

尝试为您的按钮指定一个唯一的id? 导致:

$('#myId').click(function(){
//your code here
});
最好具体说明一下。 您还可以尝试给它一个类和一个id

$('.myClass').click(function(){
var myButton = $(this).attr('id');
if(myButton == 'myId'){ do this} else if(myButton == 'myOtherId'){do this}

});

这样,您可以在一个函数中处理多个按钮,如果有多个按钮,if语句会使代码看起来乱七八糟,您可以使用一个选择案例:

首先,如果您通过AJAX$.post发送数据,您应该防止提交表单:

$("button[type=submit]").click(function(oEvent) {
    oEvent.preventDefault();
    // or in the end of handler
    return false;
});
其次,和元素将在$elem.text中不返回任何内容,要获得值,应该使用$elem.val方法


第三,对HTML元素使用id属性,这将帮助您更轻松地管理DOM。

什么是按钮元素->$this.text?给我们一个简单的名字。我以为$this会给我列表内容,但我可能错了?!你能给出完整的代码HTML+JavaScript吗?这有助于我们回答你。就像我在jQuery代码下说的,当我尝试jQuery时,我将输入切换到循环中的一个按钮。我现在只是用按钮选择器来显示我的意思抱歉,我应该阅读整个问题:您可以继续的一种方法是使用jQuery创建动态HTML,然后使用其API获取值,例如var input=$.attrtype、submit.dataitem、listItem,然后是$input[type=submit]。单击函数{$.postadd.php,{value:$this.dataitem};。这还有一个额外的好处,就是不让数据进入DOM:我应该把代码放在哪里?!项目和列表项目应替换为li?!这将只从一个正确的列表项中获取内容,而不是全部?!谢谢你的帮助;API可以被视为一个“全局”对象,它包含每个元素的键值对数据,并为每个元素生成唯一的ID。您以前在隐藏字段中的值应添加到您选择的键下的数据中。你可以发布你的代码的完整HTML吗?这将帮助我们为您找到一个明确的解决方案:-只是澄清一下:您希望发布的是postText中的文本吗?另外,您希望在p元素之后还是在p元素中的文本之后立即添加一个按钮?听起来合乎逻辑,但是当我在循环中有一个按钮时,我没有从jQuery得到响应。我已经尝试使用id和alert来查看它是否有效,但它没有发出警报,即使站点上的另一个按钮不在循环中也会发出警报。
$("button[type=submit]").click(function(oEvent) {
    oEvent.preventDefault();
    // or in the end of handler
    return false;
});