【问题标题】:Jquery: How to obtain attribute from contentJquery:如何从内容中获取属性
【发布时间】:2016-10-27 22:29:28
【问题描述】:

我无法从内容中获取元素并在用户单击鼠标时显示它。

基本上,我们正在制作一个失物招领网站,当用户点击特定位置时,我们希望出现一个带有该位置名称的文本框。

我们遇到了一个问题,即什么都没有输出,或者 url 很长,或者有时是 [Object object]

content: <area id="AF' class="location" title="Anderson Field" alt="Anderson Field">

我们有多个类名相同但ID不同的区域属性。我们不想繁琐地说 if (id == "AF") print "Anderson Field",而是想根据鼠标点击自动获取值

我们的事件处理程序:

$("href").click("click", function(){

$("#textBox").val(myfunction();

function myfunction()
{
  return $("input").val(title);
}

所以我们的 myfunction 实际上是在获取属性的值,但我们的问题是我们没有正确获取它。要么什么都没有显示,一个长的 url,或者 [Object object]

【问题讨论】:

  • return $("input").val(title); 如果这是为了获得标题,那需要更像return $("input")[0].title; - 不过,这里的“输入”也是错误的
  • 谢谢@Jaromanda,这实际上帮助了我们很多!

标签: javascript jquery database


【解决方案1】:

您可以将事件附加到地图内的“area”元素,并通过"this" keyword 从 jQuery 事件访问(“area”元素的)元素属性。

假设您的地图名为“planetmap”,例如,它可能是:

$("map[name=planetmap] area").on("click", function(){
    $("#textBox").val($(this).attr('title')).show();
    return false;
});

其中 textBox 是您要显示的隐藏输入。您可以现场观看:

https://jsfiddle.net/zetxek/rs03e3zd/5/

如果您只想设置输入的值并将其显示在代码的其他部分,您可以省略“显示”部分:

$("#textBox").val($(this).attr('title'));

【讨论】:

  • 为什么是id?不是问题要问的title吗?
  • 我对元素中的标题和 ID 相同感到困惑 - 但让我们改用标题:
  • title 和 id 在元素中根本不一样 "AF" !== "Anderson Field" 实际上是titlealt 是一样的
  • D'oh - 你完全正确。我看错了那部分,直接跳过写代码。我希望现在通过使用 title 属性使示例更加清晰,谢谢!
  • 感谢您的意见!那么,“this”关键字是否通过鼠标单击获取元素?例如,我们的地图编号为 1-35,其中每个数字代表校园的不同部分。所以 1 是我们试图访问的安德森场。使用 jaromanda 的建议: $("input")[0].title;我们得到了标题,但是当我们点击 2 或 3 时,它们都会显示“anderson Field”
猜你喜欢
  • 2015-04-20
  • 1970-01-01
  • 2012-06-10
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 2013-06-19
  • 1970-01-01
相关资源
最近更新 更多