2012-10-11 18 views
2

我有這兩個單選按鈕如何找到如果單擊項目有一定的數據屬性值

<input id="119715_0" type="radio" name="119715" value="76952" data-logic="yes" required /><label for="119715_0">Yes</label> 

<input id="119715_1" type="radio" name="119715" value="76953" data-logic="no" required /><label for="119715_1">No</label> 

我需要找出第一,如果他們有數據邏輯屬性,然後按順序值如果值爲yes或值爲no,則將if語句放在一起。我不能使用id的,因爲可能有頁面上有多個按鈕的數據邏輯,所以我試圖使用$(this),所以它運行在哪個點擊。

我找到了這個鏈接How to select elements with jQuery that have a certain value in a data attribute array,但它只針對標籤的類型。我不知道如何使用$(本)

我當前已經與

function checkLogic() { 

if ($(this).attr("data-logic")) { 

alert("haslogic"); 

} 
} 

$("input").click(checkLogic); 

瞎搞,但一直不成功使用它

+0

您的代碼應該工作,有你出的文檔準備處理程序中的代碼? – undefined

+1

http://jsfiddle.net/83UH9/ – undefined

回答

1
$("input").click(function() { 
    var dataAttr = $(this).attr("data-logic"); 

    if (dataAttr == "yes") { 
     var value = $(this).attr("value"); 
     alert('Has logic ' + value); 
    } 

}); 

http://jsfiddle.net/wCRLE/1/

+1

啊,非常感謝。這工作。 – thisuser

+0

@ user1735913請標記爲答案。謝謝 –

1

您可以使用普通的JavaScript:

if(element.getAttribute("data-logic") === null) { 
    // Doesn't have attribute 
} 

JSFiddle

+0

它不起作用 –

+0

@ShanEapen現在應該工作,檢查JSFiddle。 – Zar

+1

是的代碼工作! –

2

使用.data()方法:

$("input").on("click", function(){ 
    if($(this).data("logic")) 
    alert("haslogic"); 
}); 

EXAMPLE

在jQuery 1.4.3 HTML 5 DATA-屬性將在自動 拉出的到jQuery的數據對象。在jQuery 1.6中修改了 嵌入破折號屬性的處理方式,以符合W3C HTML5 規範。

3

檢查與.data功能:http://jsfiddle.net/byzLG/1/

$('input[name="119715"]').click(function() { 
    if ($(this).data('logic') !== undefined) { 
     alert('Has data-logic'); 
    } else { 
     alert('Does not have data-logic'); 
    } 
});​ 

使用情況if ($(this).data('logic'))因爲你在我的原代碼,希望沒有工作是如果該值是0。我敢肯定值爲false也會打破它。

+1

當然,這取決於包含真值的數據邏輯。 – andytuba

+1

良好的通話,更新。 – Gromer

0

你應該檢查值與類型。 JavaScript是真的錯了類型,所以你需要格外謹慎:

if (typeof($(this).attr('data-type')) === "undefined") 
相關問題