Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从';这';jQuery中的实例_Javascript_Jquery_Html - Fatal编程技术网

Javascript 从';这';jQuery中的实例

Javascript 从';这';jQuery中的实例,javascript,jquery,html,Javascript,Jquery,Html,当我在警报框中打印“this”实例时,它正在打印类似的内容 [object Object] 但它的实际内容是 <dl> <dt> my Name <span> John Krishna </span> </dt> <dd> <span>My fathers name</span> </dd> </dl> 我叫约翰·克里

当我在警报框中打印“this”实例时,它正在打印类似的内容

[object Object]
但它的实际内容是

<dl>
   <dt>
       my Name <span> John Krishna </span>
   </dt>
   <dd>
       <span>My fathers name</span>
   </dd>
 </dl>

我叫约翰·克里希纳
我父亲的名字
我只想显示“我的名字”而不是[object]。我的意思是,我想在我的警报框中显示“dt”中span的任何内容

为此,我在谷歌进行了尝试,在每一个地方我都会得到一些解决方案,比如使用child,或者使用内部html内容,以及一些为循环编写的解决方案。但是我不想在它周围写任何for循环,这会使我的代码变大

有人请建议我如何在警报框中只打印“我的名字”。

您需要使用:

$(this).html();

我觉得你好像在提醒整个物体。您将需要使用来仅显示元素的文本

如果
已在选择您要查找的
span
元素,您只需使用:

警报($(this).text());//而不是警报($(this));
我只需要“dt”内的文本,span内的内容不应打印

为此,我们可以使用正则表达式替换
dt
元素HTML中的
内容:

警报($('dt').html().replace(/.*/,'');
这里有一个正在使用的例子

这比下面其他一些答案所建议的使用克隆元素要好。

使用:

alert($(this).find("dt span").text());
在jQuery中,获取跨度之外的文本有点棘手。我发现这个代码:

在span中添加一个id(例如
测试名称
),然后在jQuery中匹配id(使用
$(“#myname”)
),并提醒该元素的文本返回您需要的内容

例如:

alert($("myname").text());

谢谢

这取决于您是如何选择的。如果它总体上是dl标记,那么它应该是这样的

alert($("dl").find("dt").clone().find("span").remove().end().html());
其中,dl是一个示例选择。我不知道你是怎么得到它的(通过身份证、班级等)

如果直接选择dt标记,则应使用较短的版本

alert($("dt").clone().find("span").remove().end().html());

尝试映射:将它们收集到一个数组中,而不是两次调用$:

var texts = $('span').map(function(){
    return this.previousSibling.nodeValue
});
texts[0]; // "Some text followed by "
texts[1]; // " and another text followed by "
alert(texts[0]);


希望对您有所帮助

请展示一些代码进行演示。
[object object]
表示它是对象,并且具有一些属性和/或方法。你能告诉我们“this”对象是从哪里来的吗?如果你只是为了开发而这样做,那么警告该值的脚本在哪里?请尝试
console.log(object)
。如果这是您想要的最终产品,您必须使用
innerhtml
或jquery
text
。我可以建议您更改标记吗?在这个例子中,dl的用法是不正确的,因为他想要“我的名字”,所以它不在范围内。@Epsilon这就是Q的意思,很难确定英文的错误!他的问题令人困惑,因为他还说,我们的span在“dt”@Barmar中的内容到底是什么,这最终毫无意义,因此很难回答。我认为他是指“out”而不是“我们的”,如果我使用($(this).text()),它将在该dl中显示完整的文本。我只需要“dt”内的文本,span内的内容不应打印。@JohnKrishna我已更新了答案并给出了一个示例。:-)是的,这真的很有效。非常感谢James Donnelly。他只想要
我的名字
,而不是所有的HTML.1 rep,你实际上注意到了一些比这里的任何人都重要的事情-我认为你的答案并不理想,但仍然是更好的基础-祝贺你,欢迎你!我想在这里感谢一个人的回复,但我没有足够的声誉。上面说我必须获得50英镑。谢谢,这是我最快的想法。@user2641433没有必要克隆元素。您只需在HTML上使用一个简单的
replace()
(如中所述)。我不知道为什么这个答案在所有其他答案都被否决的情况下得到这么多赞成票。@James Donnelly,我认为你是对的。你的版本会占用更少的内存。@JamesDonnelly所有其他答案都很糟糕(或者至少一开始是这样);尽管这对OP有效,但努力也很重要。
alert($("dt").clone().find("span").remove().end().html());
var texts = $('span').map(function(){
    return this.previousSibling.nodeValue
});
texts[0]; // "Some text followed by "
texts[1]; // " and another text followed by "
alert(texts[0]);