我使用的是HTML5「數據」屬性的元素,我要的屬性值賦值給一個變量,只有當它存在,如果它不是空:
var xxx = $(this).data('what') ? $(this).data('what') : 'default_value';
但它不起作用。我總是得到默認值...
我使用的是HTML5「數據」屬性的元素,我要的屬性值賦值給一個變量,只有當它存在,如果它不是空:
var xxx = $(this).data('what') ? $(this).data('what') : 'default_value';
但它不起作用。我總是得到默認值...
使用短路是更簡單,更高效:
var xxx = $(this).data('what') || 'default_value';
但無論如何,假設數據存在,您的代碼應該已經工作了(正如評論者指出的那樣)。
loooove這樣做。打我回答:p – 2011-04-28 16:16:12
jQuery將'data- *'屬性視爲'.data()'。請參閱@amit_g的演示。 – 2011-04-28 16:26:18
@火箭,不知道。我刪除了我的警告。它現在是否真的將數據存儲爲屬性?如果不是,如果更新數據而不是屬性會發生什麼? – 2011-04-28 16:29:01
根據文檔:
。數據()
的。數據()方法允許我們附加任何類型的DOM 數據 中的元素可以從圓形 引用並因此從內存 泄漏。
.attr()
的.attr()方法獲取屬性值 僅在 所述匹配組的第一個元素。
所以,你想要的是使用.attr()方法,像這樣:
var xxx = $(this).attr('data-what') || 'default_value';
jQuery將'data- *'屬性視爲'.data()'。請參閱@amit_g的演示。 – 2011-04-28 16:26:09
@火箭:使用'.attr()'可以更快。檢查出http://jsperf.com/data-vs-attr – Shaz 2011-04-28 16:43:48
看起來像$(這個)不是你期望的那樣。除此之外,聲明看起來很好。 Demo
你確定數據是什麼? – Neal 2011-04-28 16:12:50
您是否輸出了語句的條件部分以查看它是否可以真正解析爲真或假?如果沒有,請更改您的條件,以便它可以工作 – 2011-04-28 16:13:37
好的,問題是'$(this)'是我所期待的其他內容:)對不起,我很抱歉:x – Alex 2011-04-28 16:38:55