如果我需要创建几个嵌套的DOM元素,我知道一种方法,就是将它们写成长字符串,然后使用合适的jQuery函数将它们放在文档中.就像是:
elem.html(
'<div class="wrapper">
<div class="inner">
<span>Some text<span>
</div>
<div class="inner">
<span>Other text<span>
</div>
</div>');
Run Code Online (Sandbox Code Playgroud)
这种方式显然不是最干净的.刺痛并不需要太长时间来弄乱,编辑就成了问题.我更喜欢这种表示法:
$('<div></div>', {
class : 'inner'
})
.appendTo( elem );
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何在上面动态创建嵌套元素时有效地实现它.因此,如果有第二个符号的第一个例子,我会很高兴了解它.
基本上,问题是,什么是动态创建嵌套HTML元素的最佳方法,而不必处理凌乱的长字符串?
注意:我知道模板引擎.然而,这是一个关于动态创建几个HTML元素的问题.就像为插件或类似案例构建DOM依赖项时一样.
我在我正在构建的应用程序上使用Handlebars模板引擎来呈现从服务器获取的数据.
我知道它默认转义HTML值,你必须使用三个括号{{{text}}}才能text: <p>Example</p>呈现为HTML元素.
问题是,如果我收到的数据(包括HTML标签)已经被转义,我该怎么办?
所以,如果我收到如下数据:
text: <p>Example</p>
Run Code Online (Sandbox Code Playgroud)
如何强制把手翻译并将其渲染为普通HTML?
我试图通过拖放实现本机HTML5多个文件上传.我一直在学习http://onehub.com/blog/posts/designing-an-html5-drag-drop-file-uploader-using-sinatra-and-jquery-part-1/ 和 http://等教程. www.html5rocks.com/en/tutorials/file/dndfiles/ 但我仍然没有找到我需要的解决方案.
基本上我想模拟一个HTML5多文件上传输入元素的功能,但有一个div女巫我听的是drop事件.
换句话说,我想制作一个这样的表格:
<form method="post" action="somesscript.php" enctype="multipart/form-data">
<input type="text" />
<div class="drop">
<p>Drop files here</p>
</div>
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
像这样的工作是这样的:
<form method="post" action="somesscript.php" enctype="multipart/form-data">
<input type="text" />
<input name="filesToUpload[]" type="file" multiple />
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
拖放字段应该被视为表单的一部分,并且在提交表单时,我只想要来自输入的所有数据以及来自拖放字段的文件数组通过AJAX发送到服务器.
到目前为止,我只在drop事件中实现了文件名的读取.我希望删除的所有文件都被添加到一个数组中,但我不知道如何访问文件本身,而不是它们的属性,所以后者我可以通过AJAX将表单上的文件数组一起发送给其余的表格数据.
我想要的东西:
var data = e.originalEvent.dataTransfer,
files = data.files,
filesArray = [],
filesLength = files.length,
i;
for ( i = 0; i < filesLength; i++ ) {
var file = files[i];
filesArray.push(file);
}
return filesArray;
Run Code Online (Sandbox Code Playgroud)
此外,我知道有插件,但我想做本机.
我已经构建了一个简单的PHP联系表单,该表单应该通过Swift-Mailer脚本发送邮件.
问题是我一直收到这个错误
带有消息'给出邮箱中的地址[]的未捕获异常'Swift_RfcComplianceException'不符合RFC 2822,3.6.2.
我想这意味着我使用的是无效的电子邮件地址.但由于我使用myaddress@gmail.com来测试脚本,问题可能就在其他地方.这是我的配置:
邮件发送到的地方:
$my_mail = 'mymail@mydomain.com';
$my_name = 'My Name';
Run Code Online (Sandbox Code Playgroud)
消息内容:
$name = trim($_POST['name']);
$email = trim($_POST['email']);
$message = trim($_POST['message']);
$date = date('d/m/Y H:i:s');
$ipaddress = $_SERVER['REMOTE_ADDR'];
$content = $message.'\n\nSent on: '.$date.' From: '.$ipaddress;
Run Code Online (Sandbox Code Playgroud)
我用来使用swiftmailer发送邮件的功能:
function send_mail () {
require('/path/to/swift_required.php');
//The means of transport
$transport = Swift_SmtpTransport::newInstance('mail.mydomain.com', 25);
$transport->setUsername('myusername');
$transport->setPassword('mypass');
$mailer = Swift_Mailer::newInstance($transport);
//The message
$mail = Swift_Message::newInstance();
$mail->setSubject('Hello');
$mail->setFrom(array($email => $name ));
$mail->setTo(array($my_mail => $my_name));
$mail->setBody($content, 'text/plain');
//Sending the message
$test = $mailer->send($mail);
if ($test) { …Run Code Online (Sandbox Code Playgroud) 我正在搞乱jQuery的AJAX函数,并试图模拟真实服务器如何延迟我在本地主机上获得的平滑数据请求.
所以我编写的代码类似于:
$('form').submit(function (event) {
event.preventDefault();
$('#response').html('<p>Posting...</p>').fadeIn().delay(2000).queue(function () {
$.post (
'some_url.php',
{/*values here*/},
function (response) {
$('#response').html(response).delay(1000).fadeOut('slow');
//The line below is to reset the form element
$('input[type="text"], textarea').val(' ');
});
});
});
Run Code Online (Sandbox Code Playgroud)
我在这里基本上做的是将$ .post方法延迟2秒,以便可以看到"发布..."消息.当2秒完成时,我希望文本随着我得到的响应而改变,保持静止1秒,我希望它淡出.
第一个延迟工作完美,Ajax调用工作也完美,问题是 - 从某种原因,第二个延迟没有被读取,响应消息,一旦显示,拒绝消失:)
我的问题是为什么会发生这种情况,我该如何解决?
例如,如果我有一个邮件脚本或写入数据库的脚本 - 不回显任何重要的脚本(除了谢谢或错误消息),但做了很多重要的后端工作.
直接访问它们可能带来的安全问题是什么?
是否值得阻止直接访问此类文件?
他们使用$_POST/ $_GET发送联系表单接收数据,然后邮寄或写入数据库(在良好的验证后两种情况下).
仍然可以以某种方式访问正在处理的数据(除了破解我的帐户并下载它们:)),因为显然在浏览器中打开这些文件不会给攻击者任何结果?
我有一个这样的无序列表:
<ul id="names-list">
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
假设我想从此列表中为每个<li>项添加一个名称:
var names = [ "Jon", "Nick", "Bill", "Tom" ];
Run Code Online (Sandbox Code Playgroud)
我的代码是这样的:
$('#names-list li').each(function () {
$(this).append(names);
});
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,它不起作用.有人能告诉我我做错了什么吗?谢谢.
我试图在用户单击按钮时连续向文本输入字段的值添加+1.
简化,我的JQuery代码是这样的:
$('#button').on({
mousedown : function () {
var value = $(this).val();
$(this).val(value + 1);
},
mouseup : function () {
//Some other stuff here
}
});
Run Code Online (Sandbox Code Playgroud)
每次用户单击按钮时都可以使用此功能.我想要的是如果用户按下按钮,则mousedown事件每隔0.2秒触发一次,直到他停止按下(并且鼠标事件触发).
我认为这应该以某种方式用setTimeout()完成,但如果有人告诉我如何,我会很高兴.谢谢.
我正在编写一个jQuery插件,只需按一下按钮即可操作输入字段的值.
到目前为止我所拥有的是通过单击按钮来控制值的能力,以及如果用户按下按钮则不断增加它的能力.简化,脚本是这样的:
var element = $('#test-input');
var interval;
$('#test-up-button').on({
mousedown : function(e) {
element.val(parseInt(element.val()) + 1);
//Wait 400ms, than do the interval
interval = window.setInterval(function() {
element.val(parseInt(element.val()) + 1);
}, 200);
e.preventDefault();
},
mouseup : function() {
window.clearInterval(interval);
}
});
Run Code Online (Sandbox Code Playgroud)
(您还可以在此处查看工作版本:http://jsfiddle.net/Husar/Hxhsh/#base)
但是,正如您在注释中看到的那样,我也希望当mousedown事件发生时,在值初始增加之后,间隔函数将延迟400ms,而不是执行.
因此,您按下按钮,值变为+ 1,您按住按钮一点,然后间隔开始滚动.
假设我有一个列表li,通过AJAX动态创建:
?<ul id="demo-list">
<li data-test="test1" >Test 1</li>
<li data-test="test2" >Test 2</li>
<li data-test="test3" >Test 3</li>
</ul>?????????????????????????????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
当li单击其中一个时,我想获得该特定的数据属性测试li.
我尝试过类似的东西:
$('#demo-list').on('click', 'li', function() {
console.log($(this).find('li').data('test'));
});
Run Code Online (Sandbox Code Playgroud)
但它显然得到了所有列表项,而不仅仅是事件发生的特定项.
另外,我知道如何使用.live(),但我的问题是如何通过.on()
可以说divs我的HTML中有三个
<div>
<h2>This is div 1</h2>
</div>
<div>
<h2>This is div 2</h2>
</div>
<div>
<h2>This is div 3</h2>
</div>
Run Code Online (Sandbox Code Playgroud)
另外,我有一个由三个嵌套数组组成的JavaScript数组:
var array = [
[ "<p>Bla bla</p>", "<p>Other stuff</p>"],
[ "<p>Another paragraph</p>"],
[ "<p>Yet another</p>", "<p>yes</p>", "<p>yes</p>" ]
];
Run Code Online (Sandbox Code Playgroud)
我确信这个数组总是有三个成员,就像数量一样divs.
我想要做的是将主数组的每个嵌套数组的内容附加到具有相应数字的div.
就像是:
for ( var i = 0; i < array.length; i++ ) {
$('div').eq( i ).append( array[i] );
}
Run Code Online (Sandbox Code Playgroud)
上面的代码不起作用,但我认为我的意图很明确.
你可以在这里找到一个有效的例子=> http://jsfiddle.net/G8BsK/
谢谢.
我从服务器接收以下格式的数据
<ul>
<li>Some text</li>
<li>Other text</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
基本上包含标准无序列表的字符串.我现在要做的是删除ul包装列表项的标签,这样我才会收到内部内容.像这样:
<li>Some text</li>
<li>Other text</li>
Run Code Online (Sandbox Code Playgroud)
值得一提的ul是,当我获取数据时,标签将始终存在,因此我并不真正关心其中的内容,或者是否有更多ul嵌套在其中的标签.我只需要移除外部的并获取内部数据.
欢迎使用JavaScript或PHP解决方案.
如果我有这样的HTML:
<ul>
<li id="id1">Some Text</li>
<li id="id2">Other Text</li>
<-- more items could be here -->
</ul>
Run Code Online (Sandbox Code Playgroud)
如何创建一个包含JSON对象的数组,该数组具有列表中每个列表项的属性,如:
var itemsData = [
{
"id" : id,
"name" : name
},
{
"id" : id,
"name" : name
}
]
Run Code Online (Sandbox Code Playgroud)
where id和nameequal $(this).attr('id')和$(this).text()where $(this)指的是单个li项目.
jquery ×8
javascript ×6
php ×3
ajax ×2
append ×2
settimeout ×2
arrays ×1
delay ×1
dom ×1
each ×1
email ×1
for-loop ×1
html-lists ×1
html5 ×1
json ×1
mousedown ×1
mouseevent ×1
mustache ×1
nested ×1
post ×1
security ×1
setinterval ×1
string ×1
swiftmailer ×1
templates ×1