Попробуйте
$(entry.xmlNode).find('guid').text()
или
$('guid', entry.xmlNode).text()
Но вы не можете сделать:
$(something) || $(somethingElse)
потому что код никогда не дойдет до $(somethingElse)
, поскольку $(something)
вернет объект jQuery, даже если совпадение не найдено. Объект (даже пустой объект jQuery) является правдивым , поэтому выражение будет истинным независимо от значения $(somethingElse)
, JavaScript вообще пропускает его оценку Это называется оценка короткого замыкания . Если вы хотите найти сначала по "id"
, затем по "guid"
, тогда попробуйте:
var xml = entry.xmlNode;
var guid = $('id', xml).text() || $('guid', xml).text() || 0;
console.log(guid);
Причина, по которой это работает, заключается в том, что мы пытаемся получить строку на каждом шаге выражения, а не объект. Пустая строка ложна в JavaScript, поэтому выражения вроде:
"" || 42; // 42
"" || (40 + 2); // 42
вернет второе выражение (42) как результат.