【问题标题】:jQuery Address plugin - How to get link clicked on in $.address.change()jQuery 地址插件 - 如何在 $.address.change() 中点击链接
【发布时间】:2011-09-28 16:31:27
【问题描述】:

我正在尝试使用来自http://www.asual.com/jquery/address/ 的地址插件,我确实需要能够访问触发 $.address.change 函数的点击链接或对象。

所以基本上,我有一个如下所示的链接:

<a href="#" class="active" rel="address:/show-my-activity">Activity</a>

然后我有 $.address.change 函数,如下所示:

<script language="javascript">
    $.address.internalChange(function (e) {
         // this is where I need to get the obj of what was clicked to trigger it
         // find out what the e.value is, and do the ajax needed
    });
</script>

我已经遍历了“e”的所有属性,但找不到任何将我引用回被单击对象的内容。这是从“e”变量返回的内容...

undefinedtype value :change
timeStamp value :1317227369056
jQuery1317227368799 value :true
value value :/show-my-activity
path value :/show-my-activity
pathNames value :show-my-activity
parameterNames value :
parameters value :[object Object]
queryString value :
result value :undefined
target value :[object Object]
currentTarget value :[object Object]
handler value :function (e) {
    var str;
    var obj = e;
    for (prop in obj) {
        str += prop + " value :" + obj[prop] + "\n";
    }
    alert(str);
    if (e.value === "/showMyActivity") {
    }
}
data value :undefined
handleObj value :[object Object]
preventDefault value :function () {
    this.isDefaultPrevented = Z;
    var a = this.originalEvent;
    if (a) {
        a.preventDefault && a.preventDefault();
        a.returnValue = false;
    }
}
stopPropagation value :function () {
    this.isPropagationStopped = Z;
    var a = this.originalEvent;
    if (a) {
        a.stopPropagation && a.stopPropagation();
        a.cancelBubble = true;
    }
}
stopImmediatePropagation value :function () {
    this.isImmediatePropagationStopped = Z;
    this.stopPropagation();
}
isDefaultPrevented value :function Y() {
    return false;
}
isPropagationStopped value :function Y() {
    return false;
}
isImmediatePropagationStopped value :function Y() {
    return false;
}

任何帮助将不胜感激。

【问题讨论】:

    标签: jquery jquery-plugins jquery-address


    【解决方案1】:

    查看这里的文档http://www.asual.com/jquery/address/docs/

    您可以在链接的点击事件中执行此操作。

    $('a').click(function() {  
        $.address.value($(this).attr('href'));  
    });  
    

    然后用event.value抓住它。

    编辑:我用我认为可能有用的方法更新了上述解决方案。或者,您可以有一个全局变量,将您的对象分配给它的点击事件。然后您可以在其他函数中使用该变量。

    【讨论】:

    • 这不是实现它的正确方法。您应该将地址传递给该值,以便插件知道它应该转到哪个 URL。在这种情况下,您将传入“/show-my-activity”。如果传入整个对象,URL 的值是多少?
    • 是的,我刚查了一下,这样做完全破坏了这个插件的功能。它期望将 URL 传递到值中。
    • 澄清一下,您希望能够引用点击链接的 jQuery 对象吗?
    • 是的,这就是我想做的,但问题就在这里。 $.address.vaule 是当你传入 URL 时的样子。所以如果你传入一个完整的对象,那么 URL 将是domain.com/#[Object] [object]。相反,我需要它是一个真实的 URL,例如 domain.com#/show-my-activity 之类的。从技术上讲,我可以根据“rel”重新选择我单击的链接,例如 $("a[rel*='/show-my-activity']") ...但我真的不想要重新选择此事件上的每个链接,因为这确实效率低下。
    • 看来我没有办法直接从 $.address.change() 函数中的事件中获取对象,对吧?我想我将不得不再次根据 href 标记选择对象。分配全局变量听起来不像是一个干净的解决方案,因为您基本上必须为要使用此地址功能的每个链接添加一个额外的点击事件。我不是通过点击事件将地址功能分配给链接,而是通过将 rel="address:/show-my-activity" 放在链接的属性中来做到这一点。
    猜你喜欢
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多