亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在單個類名稱上使用“開頭為”選擇器

在單個類名稱上使用“開頭為”選擇器

冉冉說 2019-11-27 10:21:02
如果我有以下內容:<div class="apple-monkey"></div><div class="apple-horse"></div><div class="cow-apple-brick"></div>我可以使用以下選擇器找到前兩個DIV:$("div[class^='apple-']")但是,如果我有這個:<div class="some-other-class apple-monkey"></div><div class="apple-horse"></div><div class="cow-apple-brick"></div>它只會找到第二個DIV,因為第一個div的類是作為字符串返回的(我認為),并且實際上不是以“ apple-”開頭,而是以“ some-”開頭解決該問題的一種方法是不使用開頭為,而是包含:$("div[class*='apple-']")問題在于它還會在我的示例中選擇第三個DIV。問題:通過jQuery,對單個類名而不是整個類屬性作為字符串使用謂詞選擇器的正確方法是什么?只是獲取CLASS,然后將其拆分為一個數組,然后使用正則表達式遍歷每個單獨的問題?還是有一個更優雅/更少冗長的解決方案?
查看完整描述

3 回答

?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

盡管這里的最佳答案是針對問詢者的特殊情況的解決方法,但如果您正在尋找一種針對各個類名實際使用“開頭為”的解決方案,請執行以下操作:


您可以使用此自定義jQuery選擇器,我將其稱為:acp()“ A Class Prefix”。代碼在這篇文章的底部。


var test = $('div:acp("starting_text")');

這將選擇<div>具有至少一個以給定字符串(在此示例中為“ starting_text”)開頭的類名的所有元素,而不管該類是在類屬性字符串的開頭還是其他位置。


<div id="1" class="apple orange lemon" />

<div id="2" class="orange applelemon banana" />

<div id="3" class="orange lemon apple" />

<div id="4" class="lemon orangeapple" />

<div id="5" class="lemon orange" />


var startsWithapp = $('div:acp("app")');

這將返回元素1、2和3,但不返回 4或5。


這是:acp自定義選擇器的聲明,您可以將其放置在任何地方:


$(function(){

    $.expr[":"].acp = function(elem, index, m){

          var regString = '\\b' + m[3];

          var reg = new RegExp(regString, "g");

          return elem.className.match(reg);

    }

});

我這樣做是因為我對沒有后端控制的網站進行了很多GreaseMonkey黑客操作,因此我經常需要查找具有動態后綴的類名的元素。這非常有用。


查看完整回答
反對 回復 2019-11-27
  • 3 回答
  • 0 關注
  • 616 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號