потомки выбора jQuery, включая родителя

Неустранимая ошибка: не может использовать возвращаемое значение функции в контексте записи

Это обычно происходит при непосредственном использовании функции с empty.

Пример:

if (empty(is_null(null))) {
  echo 'empty';
}

Это связано с тем, что empty - это языковая конструкция, а не функция, она не может быть вызвана с выражением в качестве аргумента в версиях PHP до 5.5. До PHP 5.5 аргумент empty() должен быть переменной , но произвольное выражение (такое как возвращаемое значение функции) допустимо в PHP 5.5 +.

empty, несмотря на его имя, на самом деле не проверяет, является ли переменная «пустой». Вместо этого он проверяет, существует ли переменная, или == false. Выражения (например, is_null(null) в примере) всегда будут считаться существующими, поэтому здесь empty проверяет только, равен ли он false. Здесь вы можете заменить empty() на !, например. if (!is_null(null)), или явно сравнить с ложным, например. if (is_null(null) == false).

Вопросы, относящиеся

23
задан Keavon 20 May 2014 в 04:18
поделиться

5 ответов

Если я понимаю Вас правильно:

$(currentDiv).contents().addBack('.foo').css('color','red');

я переименовал "отделение" к "currentDiv" для ясности. Это выбирает элемент тока и все элементы, которые он содержит, затем отфильтровывает тех, которые не имеют класса foo, и применяет стиль к остатку, т.е. тем, которые действительно имеют класс foo.

РЕДАКТИРОВАНИЕ А небольшая оптимизация

$(currentDiv).find('.foo').addBack('.foo').css('color','red');

РЕДАКТИРОВАНИЕ

, Этот ответ был обновлен для слияния более новых методов jQuery. Это было первоначально

$(currentDiv).find('.foo').andSelf().filter('.foo').css('color','red');

, который все еще требуется для jQuery, более старого, чем 1,8

28
ответ дан tvanfosson 29 November 2019 в 02:12
поделиться

Ответ Эндрю был настолько полезным и самым эффективным из всех ответов (начиная с jQuery 1.8 и далее), поэтому я сделал, как предложил Сэм , и превратил его в тривиальный метод расширения jQuery. для каждого использовать:

Код расширения:

jQuery.fn.findAndSelf = function (selector){
    return this.find(selector).addBack(selector);
};

использовать так:

$(function(){
    $('#obj').findAndSelf('.foo').css('color', 'red');
});

JSFiddle: http://jsfiddle.net/BfEwK /

Полная заслуга Эндрю за то, что он предложил addBack() как лучший вариант (на эту дату). Поддерживаю его соответственно и предлагаю всем сделать то же самое.

2
ответ дан Community 29 November 2019 в 02:12
поделиться

Запрещая более хорошее решение, я создал новую функцию и использую его вместо $:

var _$ = function(expr, parent){ 
   return $(parent).is(expr) ? $(expr, parent).add(parent) : $(expr, parent); 
}
1
ответ дан Sam 29 November 2019 в 02:12
поделиться

Не делает это делает то, что Вы хотите (если я не неправильно понимаю...)

$(document).ready(function(){
    $("div.foo").css("color", "red");
});
-1
ответ дан cLFlaVA 29 November 2019 в 02:12
поделиться
 $('div.foo, div.foo > *').css('color','red');

основная идея состоит в том, что можно разделить различные правила соответствовать на запятыми. Точно так же, как в css. Насколько я знаю, что все здесь является supoprted jQuery и может быть "ORed" разделением запятой.

-1
ответ дан rz. 29 November 2019 в 02:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: