gpt4 book ai didi

jQuery 类型错误 : is not a function in Firefox on table object

转载 作者:行者123 更新时间:2023-12-01 04:54:05 24 4
gpt4 key购买 nike

我在 Firefox 中使用 FireQuery。这是我正在尝试做的事情:

  1. 文本“Items Ordered”存在于某个位置的标签内页面。
  2. 包含“Items Ordered”文本的表也深深嵌套在其他几个表中。

鉴于上述情况,我想获取 <table>标记最接近上述字符串的标签,并向其附加一个 div。确保获取正确 DOM 元素的标准方法是更改​​背景颜色并为其指定 1px 边框,以便它弹出并在页面上易于识别。但是,我的代码失败了。因此,我试图了解它失败的原因以及如何修复它,然后再继续附加 div。

以下是我用于测试的代码:

[HTML -- 实际代码,带有替换的个人信息和链接]

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<!-- 2013.04.20 -->

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript">
</script>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery('div').css({
'border':'solid green 2px'
})

var elems_arr = jQuery('table:contains(Items Ordered)')
console.info('elems_arr:');
console.log(elems_arr);

console.info("elems_arr.length = " + elems_arr.length);
target = elems_arr[elems_arr.length - 1]
console.warn("target:");
console.log(target);

var elementType = target.tagName.toLowerCase();
alert(elementType);

// try wrapping target element in a div with id
target.wrap("<div id='target_wrap' />");

});
</script>
<style type='text/css'>
table {
border: solid blue 1px;
min-height: 30px;
}
</style>

<title></title>
</head>

<body>
<table>
<tbody>
<tr bgcolor="#FFFFFF">
<td valign="top" colspan="2">
<table width="100%" border="0" cellspacing="0" cellpadding="5">
<tbody>
<tr bgcolor="#FFFFFF">
<td>
<center>
<b class="sans">Shipping Soon</b>
</center>
</td>
</tr>
</tbody>
</table>
</td>
</tr>

<tr>
<td bgcolor="#FFFFFF" valign="top" colspan="2">
<table width="100%" border="0" cellspacing="0" cellpadding="2">
<tbody>
<tr valign="top">
<td width="100%">
<table border="0" cellspacing="0" cellpadding="2" align="right">
<tbody>
<tr valign="top">
<td align="right">&nbsp;</td>
</tr>
</tbody>
</table><input type="hidden" name="qmsjtomutmooy" value="1">

<table border="0" cellspacing="2" cellpadding="0" width="100%">
<tbody>
<tr valign="top">
<td valign="top"><b>Items Ordered</b></td>

<td align="right" valign="top"><b>Price</b></td>
</tr>

<tr>
<td colspan="1" valign="top">1 of: <i>SET OF 3 NAIL FILES AT INTRODUCTION PRICE!!! Premium Manicure Crystal Glass Nail Files Nail File By Cheeky. Menicure / Pedicure Set of 3 Crystal Nail</i><br>
<span class="tiny">Condition: New<br>
Sold by: Cheeky-Beauty (<a href="#">seller profile</a>)<br></span></td>

<td align="right" valign="top" colspan="2">$8.99<br></td>
</tr>
</tbody>
</table><br>
</td>
</tr>
</tbody>
</table>
</td>
</tr>

<tr>
<td bgcolor="#FFFFFF" valign="top" colspan="2">
<table width="100%" border="0" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td>
<b>Shipping Address:</b><br>

<div class="displayAddressDiv">
<ul class="displayAddressUL">
<li class="displayAddressLI displayAddressFullName">MY NAME</li>

<li class="displayAddressLI displayAddressAddressLine1">123 Sesame St.</li>

<li class="displayAddressLI displayAddressCityStateOrRegionPostalCode">Beverly Hills, CA 90210</li>

<li class="displayAddressLI displayAddressCountryName">United States</li>
</ul>
</div><br>
<b>Shipping Speed:</b><br>
Two-Day Shipping<br>
</td>

<td align="right">
<table border="0" cellpadding="0" cellspacing="1">
<tbody>
<tr valign="top">
<td nowrap="nowrap" align="right">Item(s) Subtotal:</td>

<td nowrap="nowrap" align="right">$8.99</td>
</tr>

<tr valign="top">
<td nowrap="nowrap" align="right">Shipping &amp; Handling:</td>

<td nowrap="nowrap" align="right">$0.00</td>
</tr>

<tr valign="top">
<td nowrap="nowrap" align="right">&nbsp;</td>

<td nowrap="nowrap" align="right">-----</td>
</tr>

<tr valign="top">
<td nowrap="nowrap" align="right">Total before tax:</td>

<td nowrap="nowrap" align="right">$8.99</td>
</tr>

<tr valign="top">
<td nowrap="nowrap" align="right">Sales Tax:</td>

<td nowrap="nowrap" align="right">$0.00</td>
</tr>

<tr valign="top">
<td nowrap="nowrap" align="right">&nbsp;</td>

<td nowrap="nowrap" align="right">-----</td>
</tr>

<tr valign="top">
<td nowrap="nowrap" align="right"><b>Total for This Shipment:</b></td>

<td nowrap="nowrap" align="right"><b>$8.99</b></td>
</tr>

<tr valign="top">
<td nowrap="nowrap" align="right">&nbsp;</td>

<td nowrap="nowrap" align="right">-----</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</body>
</html>

使用

  • 火狐20
  • Windows Vista 商业版 32 位 SP2
  • Firebug
  • Firequery
  • Google CDN 托管的 jQuery

我发现了什么以及为什么它还不够


A) 没有冲突

许多关于“不是错误”功能的帖子表明发帖人使用的是“$”而不是“jQuery”,并且与设置无冲突模式有关,如 this post 中所示。 。我不认为这与我的问题有任何关系,尽管消息相似,因为我实现 jQuery 的方式来自 FireQuery 的“jQueryify”函数。另外,我已经使用“jQuery”而不是“$”。

B) jQuery 版本问题

我也开始怀疑这个问题可能与 jQuery 版本有关。截至撰写本文时,2.0.0 版本刚刚在 3 天前(2013 年 4 月 18 日)发布,并且已知 1.9.0 版本与以前的版本有显着不同(包括弃用了几个流行的函数),因此任何使用以前的 jQuery 版本可能需要重新设计,手动或使用 Migrate tool .

结果

因此,我使用 KOMODO IDE 6.1.3 测试了我的代码,以消除 FireQuery 如何实现 jQuerify 的任何问题。我使用了 jQuery 的三个流行版本;以下是我的跨浏览器测试的结果:

* Chrome 26.0.1410.64 m
- jQuery 1.5.1
Uncaught TypeError: Object #<HTMLTableElement> has no method 'wrap' codeTest_jQuery_2013.04.20_01.php:28
(anonymous function) codeTest_jQuery_2013.04.20_01.php:28
f.resolveWith jquery.min.js:16
d.extend.ready jquery.min.js:16
c.addEventListener.A jquery.min.js:16

- jQuery 1.7.1
Uncaught TypeError: Object #<HTMLTableElement> has no method 'wrap' codeTest_jQuery_2013.04.20_01.php:28
(anonymous function) codeTest_jQuery_2013.04.20_01.php:28
n jquery.min.js:2
o.fireWith jquery.min.js:2
e.extend.ready jquery.min.js:2
c.addEventListener.B jquery.min.js:2

- jQuery 1.9.1
Uncaught TypeError: Object #<HTMLTableElement> has no method 'wrap' codeTest_jQuery_2013.04.20_01.php:28
(anonymous function) codeTest_jQuery_2013.04.20_01.php:28
c jquery.min.js:3
p.fireWith jquery.min.js:3
b.extend.ready jquery.min.js:3
H jquery.min.js:3


* Firefox 20.0.1
- jQuery 1.5.1
TypeError: target.css is not a function
http://localhost/codeTest_jQuery_2013.04.20_01.php
Line 30

- jQuery 1.7.1
(same error)

- jQuery 1.9.1
(same error)


* Internet Explorer 8.06
- jQuery 1.5.1
Object doesn't support this property or method
codeTest_jQuery_2013.04.20_01.php, line 28 character 17

- jQuery 1.7.1
(same error)

- jQuery 1.9.1
(same error)

C) 用 div 包裹目标元素

在我的代码中,我添加了一些东西来返回对象的类型。这是我使用的:

// report element type
var elementType = target.tagName.toLowerCase();
alert(elementType); // table

它返回“table”,所以我知道我确实有一个 html 元素。

然后我想也许因为表元素是匿名的(没有 id 或名称),这就是导致问题的原因?为了解决这个问题,我尝试将目标标签包装在 div 中:

// try wrapping target element in a div with id
target.wrap("<div id='target_wrap' />");

但是,它只返回相同的“不是函数”错误,但这次引用了wrapp()方法。我验证了"wrap()" is INDEED a valid jQuery function .

D)其他想法

This post提到 Chrome 版本的“Not a Function”错误是“Uncaught TypeError”错误。它建议同一页面上有多个 jQuery 实例作为可能的原因。再说一次,这与 noConflict 有关,我不确定这是否适用于我,尽管我倾向于“不”。

我能想到的唯一的另一件事是,也许这个问题与 jQuery 对象、DOM 对象和 JavaScript 对象之间的差异和差异有关?

在开始发帖的过程中,我发现了this jQuery post这可能是相关的,但我无法理解。它似乎建议实现某些插件或包 - 我如何判断这是否只是有人试图推广他们的代码,或者它是否是一个实际的“最佳实践”,可接受的模块?

最佳答案

I want to grab the tag closest to the aforementioned string, and append a div to it.

试试这个 -

$("b:contains('Items Ordered')").closest('table').wrap("<div id='target_wrap' />");

关于jQuery 类型错误 : <whatever> is not a function in Firefox on table object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16136734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com