所以我读过jQuery在内部使用文档片段来加快渲染速度.但我想知道是否有人知道jQuery是否会在这种情况下使用createDocumentFragment我将使用每个循环将img元素附加到DOM?
var displayArray = []; // Lots of img elements
$.each(displayArray, function()
{
$('#imgSection').append(this);
});
Run Code Online (Sandbox Code Playgroud)
或者我是否需要使用此代码以减少浏览器重排的次数?
var displayArray = []; // Lots of img elements
var imgHolder = $('<div/>');
$.each(displayArray, function()
{
imgHolder.append(this);
});
$('#imgSection').append(imgHolder);
Run Code Online (Sandbox Code Playgroud)
此外,displayArray由其他代码(此处未显示)填充,该代码根据JSON文件中的路径创建img元素.
谢谢你的任何建议.
所以我之前问了一个类似的问题,现在我只是更加困惑,所以我会以不同的方式问它......
我正在尝试做的是抽象我的PHP并将我的验证器中使用的html的部分作为错误消息放入到将html返回到页面中需要它们的位置的函数中.
我现在拥有的是:
<section>
<?php
if($errMsg)
{
errMsg();
}
?>
</section>
<?php
function errMsg()
{
?>
<section>
<p>O crap! There was an error</p>
</section>
<?php
}
?>
Run Code Online (Sandbox Code Playgroud)
但在我之前提到的问题中,我被告知这样做是一种"肮脏的黑客",并且在这种情况下使用返回更好.但是要使用return我需要将所有返回的html分配给var并且为此我需要将html放在一个字符串中.我宁愿避免在字符串中输入两行以上的html,因为这样做的引号数量很大.
所以我想我要么使用heredoc语法,要么使用ob_start/ob_get_clean函数.我想知道的是.
1我是否需要费心去抽象我的代码呢?
2如果是这样,哪种方式是最好的做法?和/或
3我应该放弃网络开发并回到披萨送货上吗?: - \
当某些内容被附加到内存中的DOM时,是否会导致浏览器重排?或者仅当屏幕上的像素被告知要改变回流发生时?例如:
案例1: Img元素一次附加到DOM
var parentDiv = $('#imgHolder');
var imgArray = []; // Array of img paths populated in another function
$.each(imgArray, function()
{
parentDiv.append(createImgEle(this)); // createImgEle() // returns an <img> with the right src
}
Run Code Online (Sandbox Code Playgroud)
情况2: Img元素放在一个单独的数组中,然后附加到DOM
var parentDiv = $('#imgHolder');
var imgArray = []; // Array of img paths populated in another function
var tempArray = []; // Holds the img elements until its fully populated
$.each(imgArray, function()
{
tempArray.push(createImgEle(this));
}
parentDiv.append(tempArray);
Run Code Online (Sandbox Code Playgroud)
情况3:情况1或2,但默认情况下,parentDiv设置为display:none;在每个循环完成后可见.
基本上,我想知道的是,当屏幕像素被告知改变时,浏览器是否才开始重排? …
所以我的表单是用html构建的,并在JS中验证,它看起来像我想要的那样.现在显然我将在服务器端使用PHP验证输入,但我想知道它是否足够安全,使用Ajax提交表单然后在服务器端验证,而不是使用'submit'类型提交表单按钮和'动作'属性.基本上,使服务器端验证依赖于JS提交它是否安全?
这是我的表格:
<form name="contactForm" id="contactForm"><!-- The form has no action attribute because its submitted via Ajax -->
<div id="inputsWrapper">
<div>
<label for="fullName">Your Name: <span class="required">(required)</span></label>
<input type="text" name="fullName" id="fullName" title="First & last name" value="First & last name" maxlength="50" />
</div>
<div>
<label for="email">Your E-mail: <span class="required">(required)</span></label>
<input type="text" name="email" id="email" title="E-mail address" value="E-mail address" maxlength="500" />
</div>
<div>
<label for="subject">In Regards To: <span class="required">(required)</span></label>
<input type="text" name="subject" id="subject" title="Subject" value="Subject" maxlength="50"/>
</div>
<div>
<label for="message">Your Message: <span class="required">(required)</span></label>
<textarea name="message" …Run Code Online (Sandbox Code Playgroud) 所以我有一个包含所有函数调用的数组来检查表单的输入.然后,我在数组中有一个foreach循环,以查看validate函数的返回值是true还是false.根据该结果,foreach所处的函数返回true或false.我想弄清楚的问题是如果所有验证函数都返回true,如何返回true.
这是我的代码:
public function valInputs()
{
$valArray = array(
valName($firstName),
valName($lastName),
valPhone($phone),
valEmail($email)
); // these functions return true/false depending on validation
foreach($valArray as $value)
{
if(!$value)
{
return false;
break;
}
else
{
return true; // the problem is, true gets returned X number of times
}
}
}
Run Code Online (Sandbox Code Playgroud)
关于如何保持多次返回的任何想法?感谢您的任何帮助.
因此,为了不重复自己,我只想创建一个 PDO 连接并使用会话变量在页面之间传递它。但是当我设置 PDO 连接并设置会话 var 时,var 会在我的下一页上返回为未设置吗?
这是我第一页上的代码:
session_start();
try
{
$db = new PDO("mysql:host=".$dbHostname.";dbname=".$dbDatabase, $dbUsername, $dbPassword);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
echo "It seems there was an error. Please refresh your browser and try again. ".$e->getMessage();
}
$_SESSION['db'] = $db;
Run Code Online (Sandbox Code Playgroud)
然后我下一页上的测试代码返回为未设置。
session_start();
$db = $_SESSION['db'];
if(isset($db))echo "set";
else echo "not set";
Run Code Online (Sandbox Code Playgroud)
有任何想法吗??
连接很好,因为如果我从第一页调用函数并将 $db 作为参数传递,则该函数可以正常工作。那么为什么将数据库变量存储为会话不起作用呢?感谢您的任何帮助。
在页面加载时我的表单上我将输入中的默认文本设置为浅灰色,如下所示:
var formInputs = $('#notifyForm input');
formInputs.addClass('defaultText');
Run Code Online (Sandbox Code Playgroud)
然后我让他们使用removeClass在焦点上转回黑色.一切正常.我遇到的问题是,如果出现错误并且页面重新加载以显示PHP错误消息,那么仍在输入中的用户文本将变为灰色.我的解决方案是:
formInputs.addClass(function()
{
if($(this).attr('value') === $(this).attr('title'))
{
$(this).addClass('defaultText');
}
});
Run Code Online (Sandbox Code Playgroud)
但我知道在addClass处理程序中调用addClass会出现问题.任何人都可以提出更好的方法吗?谢谢.
我似乎无法找到答案,但你如何通过jQuery的每个方法中的索引号来访问单个数组元素?
Stright JS会这样做:
for(i=0; i<myArray.length; i++)
{
if(i === 1)
{
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
但我似乎无法弄清楚如何在每种方法中使用查找索引号...?
myArray.each(function()
{
if(this[1])
{
// doesn't work?
}
}
Run Code Online (Sandbox Code Playgroud)
感谢您的任何帮助.
javascript ×5
jquery ×4
php ×4
forms ×2
ajax ×1
browser ×1
html ×1
pdo ×1
performance ×1
validation ×1