2012-08-10 39 views
0

我有一个情况,类和id被采取,但我需要在jQuery中传递一个变量。你如何推荐?除了class,id和text之外,我还可以在jQuery的元素中传递一个变量吗?

HTML

<input 
    type="text" 
    id="cannot_change_this" 
    class="rather_not_append_extra_classes_just_for_a_variable" 
    value="Full Text Name" 
    hash="ABCDE"> 

每个值,通过自动完成选择时具有相关联的散列值。在上面的示例中,值可能是Full Text Name,但这不是唯一的。我真的需要通过的是散列:ABCDE

我不能改变id,我宁愿不添加额外的类,也不得不过滤掉用于样式的哈希。而且因为它是input我也不能使用.text()。

我该怎么把ABCDE哈希值传给jQuery?

+0

请出示哈希结构。 – wanovak 2012-08-10 18:26:35

+0

它实际上更接近一个值(全文名),但它是一个独特的值,不能从值中派生出来,因为它可能也是'full-text-name-2'。 – Ryan 2012-08-10 18:28:43

+0

哦。所以你需要计算数据并放入源输出,而不是通过JavaScript设置它?您应该查看下面我的答案中提到的HTML5数据属性。然后,如果你不关心是否符合规范,你可以简单地将自己的属性加入到元素中,像'$('input#id')。attr('hash')一样从'jQuery'中读取。 ' – 2012-08-10 18:30:37

回答

2

看看使用jQuery的数据的方法

http://api.jquery.com/jQuery.data/

可以计算在JavaScript中值的哈希值,然后将其设置为输入的数据。

另外,如果使用HTML5,则可以专门在HTML中声明数据属性。所以你可以使用像data-hash=HASH这样的属性来设置你的数据。

另外,如果你不关心comliance或者你不使用HTML5,你可以只设置自己的属性一样

<input type="text" id="cannot_change_this" 
class="rather_not_append_extra_classes_just_for_a_variable" 
value="Full Text Name" hash="ABCDE" /> 

而且使用jQuery这样的阅读:

var hash = $('input#idOfInput').attr('hash'); 
+0

因此,类似于: Ryan 2012-08-10 18:32:52

+0

@Ryan是的。究竟。 – 2012-08-10 18:33:27

1

如果我说得对。

设定值:

$("#cannot_change_this").data("hash", hashValue); 

后获得的价值:

$("#cannot_change_this").data("hash"); 
+0

输入标签上的外观如何? – Ryan 2012-08-10 18:31:34

1

你可以只使用title属性:

<input type="text" id="cannot_change_this" 
class="rather_not_append_extra_classes_just_for_a_variable" 
value="Full Text Name"title="ABCDE" /> 

它是所有输入的标准属性。

+0

这可能是一个比定义'hash'属性更好的解决方案,因为如前所述,如果您不需要为其他关注点(如可访问性)使用标题并且不使用HTML5。 – 2012-08-10 18:37:19

0

你可以有这样的:

jQuery(document).ready(function(){ 
//SET: 
jQuery("#cannot_change_this").attr("new-value", "ABCDE"); 
//READ: 
var val = jQuery("#cannot_change_this").attr("new-value"); 
alert(val); 
}); 
相关问题