1. ホーム
  2. jquery

[解決済み] jQuery: .attr();メソッドで2つの属性を追加する

2022-10-12 13:11:04

質問

EDITです。

を使用することを知りました。 _blank を使用すると、モバイルブラウザで新しいウィンドウやタブを開くことができないことを知りました。

例えば、新しいウィンドウ/タブを開く必要がある場合。

  • この作品 は、すべてのブラウザで、モバイルブラウザでも動作します。 target="_blank" .

  • これは動作しません モバイルブラウザでは動作しませんが は動作します。 は動作しますが、デスクトップ・ブラウザーでは target="new" .

--

これは動作しているものの、もっと良い方法があるのか、私が得た方法が正しいのか、唯一の方法なのか、よくわかりません。

基本的に、私がやっていることは、すべての target="_new" または target="_blank" 属性値を target="nw" この方法では、複数のウィンドウでユーザーを圧倒しないために、新しいウィンドウは1つだけ開かれ、その中で他のすべての新しいウィンドウが開かれます。

私はまた、" を追加しています。 新しいウィンドウで開く "です。 title="" 属性で指定します。

ということで、私が作った解決策はこれです。

$("a[target='_blank'], a[target='_new']").attr('target','nw').attr('title','Opens in a new window');

2つの .attr(); メソッドに注目してください。

これは、要素に2つの属性を追加する正しい方法ですか?

私は試した .attr('target','nw','title','Opens in a new window') を試してみましたが、うまくいきませんでした。

私が尋ねる理由は、DYR(Don't Repeat Yourself)の原則のためで、私が持っているコードを改善できれば素晴らしいですが、そうでなければ、それはそれであります。

ありがとうございます。

どのように解決するのですか?

動作するはずです。

.attr({
    target:"nw", 
    title:"Opens in a new window",
    "data-value":"internal link" // attributes which contain dash(-) should be covered in quotes.
});

注意 :

" 複数の属性を設定する場合、属性名を囲む引用符は省略可能です。

警告 : class' 属性を設定するときは、常に引用符を使用しなければなりません!

のjQueryドキュメント(2016年9月)より。 .attr :

document.createElement() で作成された input や button 要素の type 属性を変更しようとすると、Internet Explorer 8 以前では例外が発生します。

編集 :

今後の参考のために... に を1つ取得する 属性を取得するには、次のようにします。

var strAttribute = $(".something").attr("title");

への を設定します。 属性を設定するには

$(".something").attr("title","Test");

への を複数設定する 属性を設定するには、すべてを { ... } で囲む必要があります。}

$(".something").attr( { title:"Test", alt:"Test2" } );

編集 - チェックボックスから 'checked' 属性を取得/設定しようとしている場合...

を使用する必要があります。 prop() jQuery 1.6+の時点では

<ブロッククオート

.prop() メソッドはプロパティの値を明示的に取得する方法を提供し、.attr() は属性を取得します。

...checked 属性について覚えておくべき最も重要な概念は、checked プロパティに対応しないことです。この属性は実際には defaultChecked プロパティに対応し、チェックボックスの初期値を設定するためにのみ使用されるべきものです。 checked 属性の値はチェックボックスの状態によって変化しませんが、checked プロパティは変化します。

そのため チェックされた状態を取得する を使用する必要があります。

$('#checkbox1').prop('checked'); // Returns true/false

または チェックボックスをチェック済みまたはチェック無しとする を使うべきでしょう。

$('#checkbox1').prop('checked', true); // To check it
$('#checkbox1').prop('checked', false); // To uncheck it