就像标题所说,我想在某些条件下填写变量
我以为我可以这样做而不是:
var content = $(function() {
if ($('#content').length) {
return $('#content');
}
if ($('#content_no_decoration').length) {
return $('#contenu_no_decoration');
}
if ($('#full_content').length) {
return $('#full_content');
}
if ($('#full_content_no_decoration').length) {
return $('#full_content_no_decoration');
}
});
所以我认为javascript变量'content'将是表示dom中元素的jquery对象之一。但似乎'内容'就是这个功能。
我猜你想象我想做什么.JQuery的语法是什么?
谢谢
答案 0 :(得分:3)
$(function() { })
是DOMReady事件的简短代码。您需要显式定义一个函数,然后将返回值赋给变量。
例如:
function getObj()
{
if($('#content').length)
{
return $('#content');
}
if($('#content_no_decoration').length)
{
return $('#contenu_no_decoration');
}
if($('#full_content').length)
{
return $('#full_content');
}
if($('#full_content_no_decoration').length)
{
return $('#full_content_no_decoration');
}
}
然后您可以将值指定为:
var content = getObj();
虽然DOM已准备好,但您需要调用赋值,否则选择器将不会按预期触发。例如:
$(function() {
var content = getObj();
});
答案 1 :(得分:1)
为什么你不这样做?
function thatsAGoodName() {
if ($('#content').length) {
return $('#content');
}
if ($('#content_no_decoration').length) {
return $('#contenu_no_decoration');
}
if ($('#full_content').length) {
return $('#full_content');
}
if ($('#full_content_no_decoration').length) {
return $('#full_content_no_decoration');
}
}
var content = thatsAGoodName();
答案 2 :(得分:1)
功能
$(function() {
// DOM safe to use do stuff
})
是文档就绪事件的简写。这告诉你编码器dom可以安全使用。
你不会真的从这个事件中返回任何东西。
答案 3 :(得分:1)
您只是声明该函数,因此content
包含指向该函数的指针。
执行它,你很好:
var content = function() {
if ($('#content').length) {
return $('#content');
}
if ($('#content_no_decoration').length) {
return $('#contenu_no_decoration');
}
if ($('#full_content').length) {
return $('#full_content');
}
if ($('#full_content_no_decoration').length) {
return $('#full_content_no_decoration');
}
}();
但你真的不需要这里的功能。如果脚本标记位于页面底部(在结束</body>
- 标记之前),或者分配在加载处理程序中,则可以使用:
var content = $('#content').length
? $('#content')
: $('#content_no_decoration').length
? $('#content_no_decoration')
: $('#full_content').length
? $('#full_content')
: $('#full_content_no_decoration').length
? $('#full_content_no_decoration')
: undefined;
或者使用jQuery来保持优势并保持简短:
var content =
$('#content,#content_no_decoration,#full_content,#full_content_no_decoration')
.get(0);
// if none of the elements exist, content will be undefined, otherwise
// it will contain [a JQuery Object of] the first existing element
答案 4 :(得分:0)
content
是一个对象,因为您在此处将其设置为对象:
var content = $(function() {
你可能想要的是:
var content;
if ($('#content').length) {
content = $('#content');
}
if ($('#content_no_decoration').length) {
content = $('#contenu_no_decoration'); // Is #contenu a typo???
}
if ($('#full_content').length) {
content = $('#full_content');
}
if ($('#full_content_no_decoration').length) {
content = $('#full_content_no_decoration');
}
答案 5 :(得分:0)
稍微重新排列它应该有效:
$(function () {
var content = (function() {
var regularContent = $('#content');
if (regularContent.length !== 0) {
return regularContent;
}
var contentNoDecoration = $('#content_no_decoration');
if (contentNoDecoration.length !== 0) {
return contentNoDecoration;
}
var fullContent = $('#full_content');
if (fullContent.length !== 0) {
return fullContent;
}
var fullContentNoDecoration = $('#full_content_no_decoration');
if (fullContentNoDecoration.length !== 0) {
return fullContentNoDecoration;
}
}());
});
这段代码基本上是说一旦DOM准备就绪($(function () { ... });
部分),运行这个匿名函数((function () { ... }());
部分)并将其返回值赋给content
。
编辑:此外,您通过两次运行每个选择器而不是仅运行一次来降低效率。
答案 6 :(得分:0)
你正在使用jQuery ready事件的简写($(function() {
。我相信你想要的是一个自我调用函数:
// remove the call to jQuery
var content = (function() {
if ($('#content').length) {
return $('#content');
}
// ... more
})(); // invoke the function, which should return a jQuery object
您可能需要将其包装在document.ready中,具体取决于脚本的执行位置。
答案 7 :(得分:-1)
内容是函数,但您可以使用该函数。像:
var result = content();
删除$()
周围的var content = $({/* code */})
,它可以正常工作。